cmake_minimum_required(VERSION 3.28)
project(LibreCAD VERSION 2.2.2)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC_OPTIONS --connections string)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

find_package(Qt6 COMPONENTS Gui Core Widgets PrintSupport Svg Network REQUIRED)
find_package(Qt6 REQUIRED COMPONENTS LinguistTools)
find_package(Boost REQUIRED COMPONENTS)
find_package(Freetype)

# Define all sources (as before)
file(GLOB_RECURSE AUTO_EXCLUDED_SOURCES
    "${PROJECT_SOURCE_DIR}/librecad/src/lib/debug/*.*"
    "${PROJECT_SOURCE_DIR}/librecad/src/lib/creation/*.*"
    "${PROJECT_SOURCE_DIR}/libraries/*.*"
    "${PROJECT_SOURCE_DIR}/librecad/src/lib/engine/*.*"
    "${PROJECT_SOURCE_DIR}/librecad/src/lib/engine/clipboard/*.*"
    "${PROJECT_SOURCE_DIR}/librecad/src/lib/engine/document/*.*"
    "${PROJECT_SOURCE_DIR}/librecad/src/lib/engine/overlays/*.*"
    "${PROJECT_SOURCE_DIR}/librecad/src/lib/engine/undo/*.*"
    "${PROJECT_SOURCE_DIR}/librecad/src/lib/engine/utils/*.*"
    "${PROJECT_SOURCE_DIR}/librecad/src/lib/fileio/*.*"
    "${PROJECT_SOURCE_DIR}/librecad/src/lib/information/*.*"
    "${PROJECT_SOURCE_DIR}/librecad/src/lib/gui/*.*"
    "${PROJECT_SOURCE_DIR}/librecad/src/lib/math/*.*"
    "${PROJECT_SOURCE_DIR}/librecad/src/lib/modification/*.*"
    "${PROJECT_SOURCE_DIR}/librecad/src/lib/printing/*.*"
    "${PROJECT_SOURCE_DIR}/librecad/src/lib/scripting/*.*"
)

set(SHARED_INCLUDES
    ${Boost_INCLUDE_DIRS}
    libraries/jwwlib/src
    libraries/lciconengine
    libraries/libdxfrw/src
    libraries/libdxfrw/src/intern
    libraries/muparser/include
    librecad/res/arrows
    librecad/res/controls
    librecad/res/dxf
    librecad/res/gdt
    librecad/res/icons
    librecad/res/images
    librecad/src/actions
    librecad/src/actions/dock_widgets
    librecad/src/actions/dock_widgets/block
    librecad/src/actions/dock_widgets/cad
    librecad/src/actions/dock_widgets/entity_info
    librecad/src/actions/dock_widgets/layer
    librecad/src/actions/dock_widgets/library
    librecad/src/actions/dock_widgets/ucs_list
    librecad/src/actions/dock_widgets/workspaces
    librecad/src/actions/drawing
    librecad/src/actions/drawing/arc
    librecad/src/actions/drawing/draw
    librecad/src/actions/drawing/draw/circle
    librecad/src/actions/drawing/draw/curve
    librecad/src/actions/drawing/draw/dimensions
    librecad/src/actions/drawing/draw/ellipse
    librecad/src/actions/drawing/draw/hatch
    librecad/src/actions/drawing/draw/image
    librecad/src/actions/drawing/draw/line
    librecad/src/actions/drawing/draw/line/misc
    librecad/src/actions/drawing/draw/line/shapes
    librecad/src/actions/drawing/draw/line/shapes/polygon
    librecad/src/actions/drawing/draw/line/shapes/rect
    librecad/src/actions/drawing/draw/misc
    librecad/src/actions/drawing/draw/point
    librecad/src/actions/drawing/draw/polygon
    librecad/src/actions/drawing/draw/polyline
    librecad/src/actions/drawing/draw/rect
    librecad/src/actions/drawing/draw/spline
    librecad/src/actions/drawing/draw/text
    librecad/src/actions/drawing/edit
    librecad/src/actions/drawing/info
    librecad/src/actions/drawing/modify
    librecad/src/actions/drawing/pen
    librecad/src/actions/drawing/pick
    librecad/src/actions/drawing/rel_zero
    librecad/src/actions/drawing/selection
    librecad/src/actions/drawing/snap
    librecad/src/actions/drawing/zoom
    librecad/src/actions/file
    librecad/src/actions/options
    librecad/src/actions/print_preview
    librecad/src/cmd
    librecad/src/lib/actions
    librecad/src/lib/creation
    librecad/src/lib/debug
    librecad/src/lib/engine
    librecad/src/lib/engine/clipboard
    librecad/src/lib/engine/document
    librecad/src/lib/engine/document/blocks
    librecad/src/lib/engine/document/container
    librecad/src/lib/engine/document/dimstyles
    librecad/src/lib/engine/document/dimstyles/builder
    librecad/src/lib/engine/document/dimstyles/export
    librecad/src/lib/engine/document/entities
    librecad/src/lib/engine/document/entities/support
    librecad/src/lib/engine/document/fonts
    librecad/src/lib/engine/document/layers
    librecad/src/lib/engine/document/patterns
    librecad/src/lib/engine/document/textstyles
    librecad/src/lib/engine/document/ucs
    librecad/src/lib/engine/document/variables
    librecad/src/lib/engine/document/views
    librecad/src/lib/engine/overlays
    librecad/src/lib/engine/overlays/angles_base
    librecad/src/lib/engine/overlays/crosshair
    librecad/src/lib/engine/overlays/highlight
    librecad/src/lib/engine/overlays/info_cursor
    librecad/src/lib/engine/overlays/overlay_box
    librecad/src/lib/engine/overlays/preview
    librecad/src/lib/engine/overlays/references
    librecad/src/lib/engine/overlays/ucs_mark
    librecad/src/lib/engine/settings
    librecad/src/lib/engine/undo
    librecad/src/lib/engine/utils
    librecad/src/lib/fileio
    librecad/src/lib/filters
    librecad/src/lib/generators
    librecad/src/lib/generators/image
    librecad/src/lib/generators/layers
    librecad/src/lib/generators/makercamsvg
    librecad/src/lib/gui
    librecad/src/lib/gui/grid
    librecad/src/lib/gui/render
    librecad/src/lib/gui/render/headless
    librecad/src/lib/gui/render/widget
    librecad/src/lib/information
    librecad/src/lib/math
    librecad/src/lib/modification
    librecad/src/lib/printing
    librecad/src/lib/scripting
    librecad/src/main
    librecad/src/main/console_dxf2pdf
    librecad/src/plugins
    librecad/src/plugins/intern
    librecad/src/test
    librecad/src/ui
    librecad/src/ui/action_options
    librecad/src/ui/action_options/circle
    librecad/src/ui/action_options/curve
    librecad/src/ui/action_options/dimensions
    librecad/src/ui/action_options/draw
    librecad/src/ui/action_options/edit
    librecad/src/ui/action_options/ellipse
    librecad/src/ui/action_options/image
    librecad/src/ui/action_options/info
    librecad/src/ui/action_options/insert
    librecad/src/ui/action_options/line
    librecad/src/ui/action_options/misc
    librecad/src/ui/action_options/modify
    librecad/src/ui/action_options/other
    librecad/src/ui/action_options/point
    librecad/src/ui/action_options/polygon
    librecad/src/ui/action_options/polyline
    librecad/src/ui/action_options/print_preview
    librecad/src/ui/action_options/rect
    librecad/src/ui/action_options/select
    librecad/src/ui/action_options/selection
    librecad/src/ui/action_options/snap
    librecad/src/ui/action_options/spline
    librecad/src/ui/action_options/text
    librecad/src/ui/actions
    librecad/src/ui/components
    librecad/src/ui/components/comboboxes
    librecad/src/ui/components/containers
    librecad/src/ui/components/creators
    librecad/src/ui/components/layouts
    librecad/src/ui/components/pen
    librecad/src/ui/components/status_bar
    librecad/src/ui/components/toolbars
    librecad/src/ui/dialogs
    librecad/src/ui/dialogs/actions
    librecad/src/ui/dialogs/actions/modify
    librecad/src/ui/dialogs/creators
    librecad/src/ui/dialogs/entity
    librecad/src/ui/dialogs/file
    librecad/src/ui/dialogs/file/export
    librecad/src/ui/dialogs/file/export/image
    librecad/src/ui/dialogs/file/export/layers
    librecad/src/ui/dialogs/file/export/makercam
    librecad/src/ui/dialogs/file/export_layers
    librecad/src/ui/dialogs/main
    librecad/src/ui/dialogs/settings
    librecad/src/ui/dialogs/settings/device_options
    librecad/src/ui/dialogs/settings/dimstyles
    librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager
    librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager/support
    librecad/src/ui/dialogs/settings/options_device
    librecad/src/ui/dialogs/settings/options_drawing
    librecad/src/ui/dialogs/settings/options_general
    librecad/src/ui/dialogs/settings/options_widget
    librecad/src/ui/dialogs/settings/shortcuts
    librecad/src/ui/dock_widgets
    librecad/src/ui/dock_widgets/block_widget
    librecad/src/ui/dock_widgets/cad
    librecad/src/ui/dock_widgets/command_line
    librecad/src/ui/dock_widgets/entity_info
    librecad/src/ui/dock_widgets/layer_widget
    librecad/src/ui/dock_widgets/layers_tree
    librecad/src/ui/dock_widgets/library_widget
    librecad/src/ui/dock_widgets/pen_palette
    librecad/src/ui/dock_widgets/pen_wizard
    librecad/src/ui/dock_widgets/ucs_list
    librecad/src/ui/dock_widgets/views_list
    librecad/src/ui/dock_widgets/workspaces
    librecad/src/ui/main
    librecad/src/ui/main/fontviewer
    librecad/src/ui/main/init
    librecad/src/ui/main/persistence
    librecad/src/ui/main/release_check
    librecad/src/ui/main/support
    librecad/src/ui/main/workspaces
    librecad/src/ui/view
)

set(LIBRECAD_RES
    librecad/res/arrows/arrows.qrc
    librecad/res/controls/controls.qrc
    librecad/res/dxf/dxf.qrc
    librecad/res/gdt/gdt.qrc
    librecad/res/icons/icons.qrc
    librecad/res/images/images.qrc
    licenses/licenses.qrc
)

# Shared sources: All from SOURCES except main, consoles, and tests
set(SHARED_SOURCES
    libraries/jwwlib/src/dl_attributes.h
    libraries/jwwlib/src/dl_codes.h
    libraries/jwwlib/src/dl_creationinterface.h
    libraries/jwwlib/src/dl_entities.h
    libraries/jwwlib/src/dl_exception.h
    libraries/jwwlib/src/dl_extrusion.h
    libraries/jwwlib/src/dl_jww.cpp
    libraries/jwwlib/src/dl_jww.h
    libraries/jwwlib/src/dl_writer.h
    libraries/jwwlib/src/dl_writer_ascii.cpp
    libraries/jwwlib/src/dl_writer_ascii.h
    libraries/jwwlib/src/jwtype.h
    libraries/jwwlib/src/jwwdoc.cpp
    libraries/jwwlib/src/jwwdoc.h
    libraries/libdxfrw/src/drw_base.cpp
    libraries/libdxfrw/src/drw_base.h
    libraries/libdxfrw/src/drw_classes.cpp
    libraries/libdxfrw/src/drw_classes.h
    libraries/libdxfrw/src/drw_entities.cpp
    libraries/libdxfrw/src/drw_entities.h
    libraries/libdxfrw/src/drw_header.cpp
    libraries/libdxfrw/src/drw_header.h
    libraries/libdxfrw/src/drw_interface.h
    libraries/libdxfrw/src/drw_objects.cpp
    libraries/libdxfrw/src/drw_objects.h
    libraries/libdxfrw/src/intern/drw_cptable932.h
    libraries/libdxfrw/src/intern/drw_cptable936.h
    libraries/libdxfrw/src/intern/drw_cptable949.h
    libraries/libdxfrw/src/intern/drw_cptable950.h
    libraries/libdxfrw/src/intern/drw_cptables.h
    libraries/libdxfrw/src/intern/drw_dbg.cpp
    libraries/libdxfrw/src/intern/drw_dbg.h
    libraries/libdxfrw/src/intern/drw_reserve.h
    libraries/libdxfrw/src/intern/drw_textcodec.cpp
    libraries/libdxfrw/src/intern/drw_textcodec.h
    libraries/libdxfrw/src/intern/dwgbuffer.cpp
    libraries/libdxfrw/src/intern/dwgbuffer.h
    libraries/libdxfrw/src/intern/dwgreader.cpp
    libraries/libdxfrw/src/intern/dwgreader.h
    libraries/libdxfrw/src/intern/dwgreader15.cpp
    libraries/libdxfrw/src/intern/dwgreader15.h
    libraries/libdxfrw/src/intern/dwgreader18.cpp
    libraries/libdxfrw/src/intern/dwgreader18.h
    libraries/libdxfrw/src/intern/dwgreader21.cpp
    libraries/libdxfrw/src/intern/dwgreader21.h
    libraries/libdxfrw/src/intern/dwgreader24.cpp
    libraries/libdxfrw/src/intern/dwgreader24.h
    libraries/libdxfrw/src/intern/dwgreader27.cpp
    libraries/libdxfrw/src/intern/dwgreader27.h
    libraries/libdxfrw/src/intern/dwgutil.cpp
    libraries/libdxfrw/src/intern/dwgutil.h
    libraries/libdxfrw/src/intern/dxfreader.cpp
    libraries/libdxfrw/src/intern/dxfreader.h
    libraries/libdxfrw/src/intern/dxfwriter.cpp
    libraries/libdxfrw/src/intern/dxfwriter.h
    libraries/libdxfrw/src/intern/rscodec.cpp
    libraries/libdxfrw/src/intern/rscodec.h
    libraries/libdxfrw/src/libdwgr.cpp
    libraries/libdxfrw/src/libdwgr.h
    libraries/libdxfrw/src/libdxfrw.cpp
    libraries/libdxfrw/src/libdxfrw.h
    libraries/libdxfrw/src/main_doc.h
    librecad/src/actions/dock_widgets/block/rs_actionblocksadd.cpp
    librecad/src/actions/dock_widgets/block/rs_actionblocksadd.h
    librecad/src/actions/dock_widgets/block/rs_actionblocksattributes.cpp
    librecad/src/actions/dock_widgets/block/rs_actionblocksattributes.h
    librecad/src/actions/dock_widgets/block/rs_actionblockscreate.cpp
    librecad/src/actions/dock_widgets/block/rs_actionblockscreate.h
    librecad/src/actions/dock_widgets/block/rs_actionblocksedit.cpp
    librecad/src/actions/dock_widgets/block/rs_actionblocksedit.h
    librecad/src/actions/dock_widgets/block/rs_actionblocksfreezeall.cpp
    librecad/src/actions/dock_widgets/block/rs_actionblocksfreezeall.h
    librecad/src/actions/dock_widgets/block/rs_actionblocksinsert.cpp
    librecad/src/actions/dock_widgets/block/rs_actionblocksinsert.h
    librecad/src/actions/dock_widgets/block/rs_actionblocksremove.cpp
    librecad/src/actions/dock_widgets/block/rs_actionblocksremove.h
    librecad/src/actions/dock_widgets/block/rs_actionblockssave.cpp
    librecad/src/actions/dock_widgets/block/rs_actionblockssave.h
    librecad/src/actions/dock_widgets/block/rs_actionblockstoggleview.cpp
    librecad/src/actions/dock_widgets/block/rs_actionblockstoggleview.h
    librecad/src/actions/dock_widgets/entity_info/lc_actioninfopickcoordinates.cpp
    librecad/src/actions/dock_widgets/layer/lc_actionentitylayerbase.cpp
    librecad/src/actions/dock_widgets/layer/lc_actionentitylayerbase.h
    librecad/src/actions/dock_widgets/layer/lc_actionentitylayertoggle.cpp
    librecad/src/actions/dock_widgets/layer/lc_actionlayerscmd.cpp
    librecad/src/actions/dock_widgets/layer/lc_actionlayerscmd.h
    librecad/src/actions/dock_widgets/layer/lc_actionlayersexport.cpp
    librecad/src/actions/dock_widgets/layer/lc_actionlayersexport.h
    librecad/src/actions/dock_widgets/layer/lc_actionlayerstoggleconstruction.cpp
    librecad/src/actions/dock_widgets/layer/lc_actionlayerstoggleconstruction.h
    librecad/src/actions/dock_widgets/layer/rs_actionlayersadd.cpp
    librecad/src/actions/dock_widgets/layer/rs_actionlayersadd.h
    librecad/src/actions/dock_widgets/layer/rs_actionlayersedit.cpp
    librecad/src/actions/dock_widgets/layer/rs_actionlayersedit.h
    librecad/src/actions/dock_widgets/layer/rs_actionlayersfreezeall.cpp
    librecad/src/actions/dock_widgets/layer/rs_actionlayersfreezeall.h
    librecad/src/actions/dock_widgets/layer/rs_actionlayerslockall.cpp
    librecad/src/actions/dock_widgets/layer/rs_actionlayerslockall.h
    librecad/src/actions/dock_widgets/layer/rs_actionlayersremove.cpp
    librecad/src/actions/dock_widgets/layer/rs_actionlayersremove.h
    librecad/src/actions/dock_widgets/layer/rs_actionlayerstogglelock.cpp
    librecad/src/actions/dock_widgets/layer/rs_actionlayerstogglelock.h
    librecad/src/actions/dock_widgets/layer/rs_actionlayerstoggleprint.cpp
    librecad/src/actions/dock_widgets/layer/rs_actionlayerstoggleprint.h
    librecad/src/actions/dock_widgets/layer/rs_actionlayerstoggleview.cpp
    librecad/src/actions/dock_widgets/layer/rs_actionlayerstoggleview.h
    librecad/src/actions/dock_widgets/library/rs_actionlibraryinsert.cpp
    librecad/src/actions/dock_widgets/library/rs_actionlibraryinsert.h
    librecad/src/actions/dock_widgets/ucs_list/lc_actionucsbydimordinate.cpp
    librecad/src/actions/dock_widgets/ucs_list/lc_actionucsbydimordinate.h
    librecad/src/actions/dock_widgets/ucs_list/lc_actionucscreate.cpp
    librecad/src/actions/dock_widgets/ucs_list/lc_actionucscreate.h
    librecad/src/actions/drawing/draw/circle/lc_actiondrawcircle2pr.cpp
    librecad/src/actions/drawing/draw/circle/lc_actiondrawcircle2pr.h
    librecad/src/actions/drawing/draw/circle/lc_actiondrawcirclebase.cpp
    librecad/src/actions/drawing/draw/circle/lc_actiondrawcirclebase.h
    librecad/src/actions/drawing/draw/circle/lc_actiondrawcirclebyarc.cpp
    librecad/src/actions/drawing/draw/circle/rs_actiondrawcircle.cpp
    librecad/src/actions/drawing/draw/circle/rs_actiondrawcircle.h
    librecad/src/actions/drawing/draw/circle/rs_actiondrawcircle2p.cpp
    librecad/src/actions/drawing/draw/circle/rs_actiondrawcircle2p.h
    librecad/src/actions/drawing/draw/circle/rs_actiondrawcircle3p.cpp
    librecad/src/actions/drawing/draw/circle/rs_actiondrawcircle3p.h
    librecad/src/actions/drawing/draw/circle/rs_actiondrawcirclecr.cpp
    librecad/src/actions/drawing/draw/circle/rs_actiondrawcirclecr.h
    librecad/src/actions/drawing/draw/circle/rs_actiondrawcircleinscribe.cpp
    librecad/src/actions/drawing/draw/circle/rs_actiondrawcircleinscribe.h
    librecad/src/actions/drawing/draw/circle/rs_actiondrawcircletan1_2p.cpp
    librecad/src/actions/drawing/draw/circle/rs_actiondrawcircletan1_2p.h
    librecad/src/actions/drawing/draw/circle/rs_actiondrawcircletan2.cpp
    librecad/src/actions/drawing/draw/circle/rs_actiondrawcircletan2.h
    librecad/src/actions/drawing/draw/circle/rs_actiondrawcircletan2_1p.cpp
    librecad/src/actions/drawing/draw/circle/rs_actiondrawcircletan2_1p.h
    librecad/src/actions/drawing/draw/circle/rs_actiondrawcircletan3.cpp
    librecad/src/actions/drawing/draw/circle/rs_actiondrawcircletan3.h
    librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointsangle.cpp
    librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointsangle.h
    librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointsbase.cpp
    librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointsbase.h
    librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointsheight.cpp
    librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointsheight.h
    librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointslength.cpp
    librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointslength.h
    librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointsradius.cpp
    librecad/src/actions/drawing/draw/curve/lc_actiondrawarc2pointsradius.h
    librecad/src/actions/drawing/draw/curve/lc_actiondrawparabola4points.cpp
    librecad/src/actions/drawing/draw/curve/lc_actiondrawparabolaFD.cpp
    librecad/src/actions/drawing/draw/curve/rs_actiondrawarc.cpp
    librecad/src/actions/drawing/draw/curve/rs_actiondrawarc.h
    librecad/src/actions/drawing/draw/curve/rs_actiondrawarc3p.cpp
    librecad/src/actions/drawing/draw/curve/rs_actiondrawarc3p.h
    librecad/src/actions/drawing/draw/curve/rs_actiondrawarctangential.cpp
    librecad/src/actions/drawing/draw/curve/rs_actiondrawarctangential.h
    librecad/src/actions/drawing/draw/curve/rs_actiondrawlinefree.cpp
    librecad/src/actions/drawing/draw/curve/rs_actiondrawlinefree.h
    librecad/src/actions/drawing/draw/dimensions/lc_actioncircledimbase.cpp
    librecad/src/actions/drawing/draw/dimensions/lc_actioncircledimbase.h
    librecad/src/actions/drawing/draw/dimensions/lc_actiondimarc.cpp
    librecad/src/actions/drawing/draw/dimensions/lc_actiondimarc.h
    librecad/src/actions/drawing/draw/dimensions/lc_actiondimlinearbase.cpp
    librecad/src/actions/drawing/draw/dimensions/lc_actiondimordinate.cpp
    librecad/src/actions/drawing/draw/dimensions/lc_actiondimordinate.h
    librecad/src/actions/drawing/draw/dimensions/lc_actiondimordinaterebase.cpp
    librecad/src/actions/drawing/draw/dimensions/lc_actiondimordinaterebase.h
    librecad/src/actions/drawing/draw/dimensions/lc_actiondimstyleapply.cpp
    librecad/src/actions/drawing/draw/dimensions/lc_actiondimstyleapply.h
    librecad/src/actions/drawing/draw/dimensions/lc_actiondrawdimbaseline.cpp
    librecad/src/actions/drawing/draw/dimensions/lc_actiondrawdimbaseline.h
    librecad/src/actions/drawing/draw/dimensions/lc_actiondrawgdtfeaturecontrolframe.cpp
    librecad/src/actions/drawing/draw/dimensions/lc_actiondrawgdtfeaturecontrolframe.h
    librecad/src/actions/drawing/draw/dimensions/lc_actionselectdimordinatesameorigin.cpp
    librecad/src/actions/drawing/draw/dimensions/lc_actionselectdimordinatesameorigin.h
    librecad/src/actions/drawing/draw/dimensions/rs_actiondimaligned.cpp
    librecad/src/actions/drawing/draw/dimensions/rs_actiondimaligned.h
    librecad/src/actions/drawing/draw/dimensions/rs_actiondimangular.cpp
    librecad/src/actions/drawing/draw/dimensions/rs_actiondimangular.h
    librecad/src/actions/drawing/draw/dimensions/rs_actiondimdiametric.cpp
    librecad/src/actions/drawing/draw/dimensions/rs_actiondimdiametric.h
    librecad/src/actions/drawing/draw/dimensions/rs_actiondimension.cpp
    librecad/src/actions/drawing/draw/dimensions/rs_actiondimension.h
    librecad/src/actions/drawing/draw/dimensions/rs_actiondimleader.cpp
    librecad/src/actions/drawing/draw/dimensions/rs_actiondimleader.h
    librecad/src/actions/drawing/draw/dimensions/rs_actiondimlinear.cpp
    librecad/src/actions/drawing/draw/dimensions/rs_actiondimlinear.h
    librecad/src/actions/drawing/draw/dimensions/rs_actiondimradial.cpp
    librecad/src/actions/drawing/draw/dimensions/rs_actiondimradial.h
    librecad/src/actions/drawing/draw/dimensions/rs_actiontoolregeneratedimensions.cpp
    librecad/src/actions/drawing/draw/dimensions/rs_actiontoolregeneratedimensions.h
    librecad/src/actions/drawing/draw/ellipse/lc_actiondrawellipse1point.cpp
    librecad/src/actions/drawing/draw/ellipse/lc_actiondrawellipse1point.h
    librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipse4points.cpp
    librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipse4points.h
    librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipseaxis.cpp
    librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipseaxis.h
    librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipsecenter3points.cpp
    librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipsecenter3points.h
    librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipsefocipoint.cpp
    librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipsefocipoint.h
    librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipseinscribe.cpp
    librecad/src/actions/drawing/draw/ellipse/rs_actiondrawellipseinscribe.h
    librecad/src/actions/drawing/draw/hatch/rs_actiondrawhatch.cpp
    librecad/src/actions/drawing/draw/hatch/rs_actiondrawhatch.h
    librecad/src/actions/drawing/draw/image/rs_actiondrawimage.cpp
    librecad/src/actions/drawing/draw/image/rs_actiondrawimage.h
    librecad/src/actions/drawing/draw/line/lc_abstractactiondrawline.cpp
    librecad/src/actions/drawing/draw/line/lc_actiondrawlineanglerel.cpp
    librecad/src/actions/drawing/draw/line/lc_actiondrawlineanglerel.h
    librecad/src/actions/drawing/draw/line/lc_actiondrawlinefrompointtoline.cpp
    librecad/src/actions/drawing/draw/line/lc_actiondrawlinesnake.cpp
    librecad/src/actions/drawing/draw/line/lc_actiondrawlinesnake.h
    librecad/src/actions/drawing/draw/line/lc_actiondrawslicedivide.cpp
    librecad/src/actions/drawing/draw/line/misc/lc_actiondrawboundingbox.cpp
    librecad/src/actions/drawing/draw/line/misc/lc_actiondrawboundingbox.h
    librecad/src/actions/drawing/draw/line/misc/lc_actiondrawcross.cpp
    librecad/src/actions/drawing/draw/line/misc/lc_actiondrawcross.h
    librecad/src/actions/drawing/draw/line/misc/lc_actiondrawmidline.cpp
    librecad/src/actions/drawing/draw/line/misc/lc_actiondrawmidline.h
    librecad/src/actions/drawing/draw/line/rs_actiondrawline.cpp
    librecad/src/actions/drawing/draw/line/rs_actiondrawline.h
    librecad/src/actions/drawing/draw/line/rs_actiondrawlineangle.cpp
    librecad/src/actions/drawing/draw/line/rs_actiondrawlineangle.h
    librecad/src/actions/drawing/draw/line/rs_actiondrawlinebisector.cpp
    librecad/src/actions/drawing/draw/line/rs_actiondrawlinebisector.h
    librecad/src/actions/drawing/draw/line/rs_actiondrawlinehorvert.cpp
    librecad/src/actions/drawing/draw/line/rs_actiondrawlinehorvert.h
    librecad/src/actions/drawing/draw/line/rs_actiondrawlineorthtan.cpp
    librecad/src/actions/drawing/draw/line/rs_actiondrawlineorthtan.h
    librecad/src/actions/drawing/draw/line/rs_actiondrawlineparallel.cpp
    librecad/src/actions/drawing/draw/line/rs_actiondrawlineparallel.h
    librecad/src/actions/drawing/draw/line/rs_actiondrawlineparallelthrough.cpp
    librecad/src/actions/drawing/draw/line/rs_actiondrawlineparallelthrough.h
    librecad/src/actions/drawing/draw/line/rs_actiondrawlinerelangle.cpp
    librecad/src/actions/drawing/draw/line/rs_actiondrawlinerelangle.h
    librecad/src/actions/drawing/draw/line/rs_actiondrawlinetangent1.cpp
    librecad/src/actions/drawing/draw/line/rs_actiondrawlinetangent1.h
    librecad/src/actions/drawing/draw/line/rs_actiondrawlinetangent2.cpp
    librecad/src/actions/drawing/draw/line/rs_actiondrawlinetangent2.h
    librecad/src/actions/drawing/draw/point/lc_actiondrawlinepoints.cpp
    librecad/src/actions/drawing/draw/point/lc_actiondrawlinepoints.h
    librecad/src/actions/drawing/draw/point/lc_actiondrawpointslattice.cpp
    librecad/src/actions/drawing/draw/point/lc_actiondrawpointslattice.h
    librecad/src/actions/drawing/draw/point/lc_actionpastetopoints.cpp
    librecad/src/actions/drawing/draw/point/lc_actionpastetopoints.h
    librecad/src/actions/drawing/draw/point/lc_actionselectpoints.cpp
    librecad/src/actions/drawing/draw/point/lc_actionselectpoints.h
    librecad/src/actions/drawing/draw/point/rs_actiondrawpoint.cpp
    librecad/src/actions/drawing/draw/point/rs_actiondrawpoint.h
    librecad/src/actions/drawing/draw/polygon/lc_actiondrawlinepolygon3.cpp
    librecad/src/actions/drawing/draw/polygon/lc_actiondrawlinepolygon3.h
    librecad/src/actions/drawing/draw/polygon/lc_actiondrawlinepolygon4.cpp
    librecad/src/actions/drawing/draw/polygon/lc_actiondrawlinepolygon4.h
    librecad/src/actions/drawing/draw/polygon/lc_actiondrawlinepolygonbase.cpp
    librecad/src/actions/drawing/draw/polygon/lc_actiondrawlinepolygonbase.h
    librecad/src/actions/drawing/draw/polygon/lc_actiondrawstar.cpp
    librecad/src/actions/drawing/draw/polygon/rs_actiondrawlinepolygon.cpp
    librecad/src/actions/drawing/draw/polygon/rs_actiondrawlinepolygon.h
    librecad/src/actions/drawing/draw/polygon/rs_actiondrawlinepolygon2.cpp
    librecad/src/actions/drawing/draw/polygon/rs_actiondrawlinepolygon2.h
    librecad/src/actions/drawing/draw/polyline/lc_actionpolylinearcstolines.cpp
    librecad/src/actions/drawing/draw/polyline/lc_actionpolylinearcstolines.h
    librecad/src/actions/drawing/draw/polyline/lc_actionpolylinechangesegmenttype.cpp
    librecad/src/actions/drawing/draw/polyline/lc_actionpolylinechangesegmenttype.h
    librecad/src/actions/drawing/draw/polyline/lc_actionpolylinedeletebase.cpp
    librecad/src/actions/drawing/draw/polyline/rs_actiondrawpolyline.cpp
    librecad/src/actions/drawing/draw/polyline/rs_actiondrawpolyline.h
    librecad/src/actions/drawing/draw/polyline/rs_actionpolylineadd.cpp
    librecad/src/actions/drawing/draw/polyline/rs_actionpolylineadd.h
    librecad/src/actions/drawing/draw/polyline/rs_actionpolylineappend.cpp
    librecad/src/actions/drawing/draw/polyline/rs_actionpolylineappend.h
    librecad/src/actions/drawing/draw/polyline/rs_actionpolylinedel.cpp
    librecad/src/actions/drawing/draw/polyline/rs_actionpolylinedel.h
    librecad/src/actions/drawing/draw/polyline/rs_actionpolylinedelbetween.cpp
    librecad/src/actions/drawing/draw/polyline/rs_actionpolylinedelbetween.h
    librecad/src/actions/drawing/draw/polyline/rs_actionpolylineequidistant.cpp
    librecad/src/actions/drawing/draw/polyline/rs_actionpolylineequidistant.h
    librecad/src/actions/drawing/draw/polyline/rs_actionpolylinesegment.cpp
    librecad/src/actions/drawing/draw/polyline/rs_actionpolylinesegment.h
    librecad/src/actions/drawing/draw/polyline/rs_actionpolylinetrim.cpp
    librecad/src/actions/drawing/draw/polyline/rs_actionpolylinetrim.h
    librecad/src/actions/drawing/draw/rect/lc_abstractactiondrawrectangle.cpp
    librecad/src/actions/drawing/draw/rect/lc_abstractactiondrawrectangle.h
    librecad/src/actions/drawing/draw/rect/lc_actiondrawrectangle1point.cpp
    librecad/src/actions/drawing/draw/rect/lc_actiondrawrectangle2points.cpp
    librecad/src/actions/drawing/draw/rect/lc_actiondrawrectangle2points.h
    librecad/src/actions/drawing/draw/rect/lc_actiondrawrectangle3points.cpp
    librecad/src/actions/drawing/draw/rect/lc_actiondrawrectangle3points.h
    librecad/src/actions/drawing/draw/rect/rs_actiondrawlinerectangle.cpp
    librecad/src/actions/drawing/draw/rect/rs_actiondrawlinerectangle.h
    librecad/src/actions/drawing/draw/spline/lc_actiondrawsplinepoints.cpp
    librecad/src/actions/drawing/draw/spline/lc_actiondrawsplinepoints.h
    librecad/src/actions/drawing/draw/spline/lc_actionremovesplinepoints.cpp
    librecad/src/actions/drawing/draw/spline/lc_actionremovesplinepoints.h
    librecad/src/actions/drawing/draw/spline/lc_actionsplineaddpoint.cpp
    librecad/src/actions/drawing/draw/spline/lc_actionsplineaddpoint.h
    librecad/src/actions/drawing/draw/spline/lc_actionsplineappendpoint.cpp
    librecad/src/actions/drawing/draw/spline/lc_actionsplineappendpoint.h
    librecad/src/actions/drawing/draw/spline/lc_actionsplineexplode.cpp
    librecad/src/actions/drawing/draw/spline/lc_actionsplineexplode.h
    librecad/src/actions/drawing/draw/spline/lc_actionsplinefrompolyline.cpp
    librecad/src/actions/drawing/draw/spline/lc_actionsplinefrompolyline.h
    librecad/src/actions/drawing/draw/spline/lc_actionsplinemodifybase.cpp
    librecad/src/actions/drawing/draw/spline/lc_actionsplinemodifybase.h
    librecad/src/actions/drawing/draw/spline/lc_actionsplineremovebetween.cpp
    librecad/src/actions/drawing/draw/spline/lc_actionsplineremovebetween.h
    librecad/src/actions/drawing/draw/spline/rs_actiondrawspline.cpp
    librecad/src/actions/drawing/draw/spline/rs_actiondrawspline.h
    librecad/src/actions/drawing/draw/text/rs_actiondrawmtext.cpp
    librecad/src/actions/drawing/draw/text/rs_actiondrawmtext.h
    librecad/src/actions/drawing/draw/text/rs_actiondrawtext.cpp
    librecad/src/actions/drawing/draw/text/rs_actiondrawtext.h
    librecad/src/actions/drawing/edit/lc_actioneditpastetransform.cpp
    librecad/src/actions/drawing/edit/lc_actioneditpastetransform.h
    librecad/src/actions/drawing/edit/rs_actioneditcopy.cpp
    librecad/src/actions/drawing/edit/rs_actioneditcopy.h
    librecad/src/actions/drawing/edit/rs_actioneditundo.cpp
    librecad/src/actions/drawing/edit/rs_actioneditundo.h
    librecad/src/actions/drawing/info/lc_actioninfo3pointsangle.cpp
    librecad/src/actions/drawing/info/lc_actioninfo3pointsangle.h
    librecad/src/actions/drawing/info/lc_actioninfopoint.cpp
    librecad/src/actions/drawing/info/lc_actioninfopoint.h
    librecad/src/actions/drawing/info/lc_actioninfoproperties.cpp
    librecad/src/actions/drawing/info/rs_actioninfoangle.cpp
    librecad/src/actions/drawing/info/rs_actioninfoangle.h
    librecad/src/actions/drawing/info/rs_actioninfoarea.cpp
    librecad/src/actions/drawing/info/rs_actioninfoarea.h
    librecad/src/actions/drawing/info/rs_actioninfodist.cpp
    librecad/src/actions/drawing/info/rs_actioninfodist.h
    librecad/src/actions/drawing/info/rs_actioninfodist2.cpp
    librecad/src/actions/drawing/info/rs_actioninfodist2.h
    librecad/src/actions/drawing/info/rs_actioninfoinside.cpp
    librecad/src/actions/drawing/info/rs_actioninfoinside.h
    librecad/src/actions/drawing/info/rs_actioninfototallength.cpp
    librecad/src/actions/drawing/info/rs_actioninfototallength.h
    librecad/src/actions/drawing/lc_abstractactionwithpreview.cpp
    librecad/src/actions/drawing/lc_abstractactionwithpreview.h
    librecad/src/actions/drawing/modify/lc_actionmodifyalign.cpp
    librecad/src/actions/drawing/modify/lc_actionmodifyalign.h
    librecad/src/actions/drawing/modify/lc_actionmodifyalignref.cpp
    librecad/src/actions/drawing/modify/lc_actionmodifyalignref.h
    librecad/src/actions/drawing/modify/lc_actionmodifyalignsingle.cpp
    librecad/src/actions/drawing/modify/lc_actionmodifyalignsingle.h
    librecad/src/actions/drawing/modify/lc_actionmodifybase.cpp
    librecad/src/actions/drawing/modify/lc_actionmodifybase.h
    librecad/src/actions/drawing/modify/lc_actionmodifybreakdivide.cpp
    librecad/src/actions/drawing/modify/lc_actionmodifybreakdivide.h
    librecad/src/actions/drawing/modify/lc_actionmodifyduplicate.cpp
    librecad/src/actions/drawing/modify/lc_actionmodifyduplicate.h
    librecad/src/actions/drawing/modify/lc_actionmodifylinegap.cpp
    librecad/src/actions/drawing/modify/lc_actionmodifylinejoin.cpp
    librecad/src/actions/drawing/modify/lc_actionmodifymoveadjust.cpp
    librecad/src/actions/drawing/modify/lc_actionmodifymoveadjust.h
    librecad/src/actions/drawing/modify/lc_actionmodifyselectionbase.cpp
    librecad/src/actions/drawing/modify/lc_actionmodifyselectionbase.h
    librecad/src/actions/drawing/modify/rs_actionblocksexplode.cpp
    librecad/src/actions/drawing/modify/rs_actionblocksexplode.h
    librecad/src/actions/drawing/modify/rs_actionmodifyattributes.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifyattributes.h
    librecad/src/actions/drawing/modify/rs_actionmodifybevel.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifybevel.h
    librecad/src/actions/drawing/modify/rs_actionmodifycut.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifycut.h
    librecad/src/actions/drawing/modify/rs_actionmodifydelete.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifydelete.h
    librecad/src/actions/drawing/modify/rs_actionmodifydeletefree.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifydeletefree.h
    librecad/src/actions/drawing/modify/rs_actionmodifyentity.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifyentity.h
    librecad/src/actions/drawing/modify/rs_actionmodifyexplodetext.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifyexplodetext.h
    librecad/src/actions/drawing/modify/rs_actionmodifymirror.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifymirror.h
    librecad/src/actions/drawing/modify/rs_actionmodifymove.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifymove.h
    librecad/src/actions/drawing/modify/rs_actionmodifymoverotate.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifymoverotate.h
    librecad/src/actions/drawing/modify/rs_actionmodifyoffset.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifyoffset.h
    librecad/src/actions/drawing/modify/rs_actionmodifyrevertdirection.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifyrevertdirection.h
    librecad/src/actions/drawing/modify/rs_actionmodifyrotate.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifyrotate.h
    librecad/src/actions/drawing/modify/rs_actionmodifyrotate2.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifyrotate2.h
    librecad/src/actions/drawing/modify/rs_actionmodifyround.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifyround.h
    librecad/src/actions/drawing/modify/rs_actionmodifyscale.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifyscale.h
    librecad/src/actions/drawing/modify/rs_actionmodifystretch.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifystretch.h
    librecad/src/actions/drawing/modify/rs_actionmodifytrim.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifytrim.h
    librecad/src/actions/drawing/modify/rs_actionmodifytrimamount.cpp
    librecad/src/actions/drawing/modify/rs_actionmodifytrimamount.h
    librecad/src/actions/drawing/modify/rs_actionorder.cpp
    librecad/src/actions/drawing/modify/rs_actionorder.h
    librecad/src/actions/drawing/pen/lc_actionpenapply.cpp
    librecad/src/actions/drawing/pen/lc_actionpenpick.cpp
    librecad/src/actions/drawing/pen/lc_actionpensyncactivebylayer.cpp
    librecad/src/actions/drawing/pen/lc_actionpensyncactivebylayer.h
    librecad/src/actions/drawing/pick/lc_actioninteractivepickangle.cpp
    librecad/src/actions/drawing/pick/lc_actioninteractivepickangle.h
    librecad/src/actions/drawing/pick/lc_actioninteractivepickbase.cpp
    librecad/src/actions/drawing/pick/lc_actioninteractivepickbase.h
    librecad/src/actions/drawing/pick/lc_actioninteractivepickdistance.cpp
    librecad/src/actions/drawing/pick/lc_actioninteractivepickdistance.h
    librecad/src/actions/drawing/pick/lc_actioninteractivepickposition.cpp
    librecad/src/actions/drawing/pick/lc_actioninteractivepickposition.h
    librecad/src/actions/drawing/rel_zero/rs_actionlockrelativezero.cpp
    librecad/src/actions/drawing/rel_zero/rs_actionlockrelativezero.h
    librecad/src/actions/drawing/rel_zero/rs_actionsetrelativezero.cpp
    librecad/src/actions/drawing/rel_zero/rs_actionsetrelativezero.h
    librecad/src/actions/drawing/rs_actiondefault.cpp
    librecad/src/actions/drawing/rs_actiondefault.h
    librecad/src/actions/drawing/selection/lc_actionsingleentityselectbase.cpp
    librecad/src/actions/drawing/selection/lc_actionsingleentityselectbase.h
    librecad/src/actions/drawing/selection/rs_actionselectall.cpp
    librecad/src/actions/drawing/selection/rs_actionselectall.h
    librecad/src/actions/drawing/selection/rs_actionselectcontour.cpp
    librecad/src/actions/drawing/selection/rs_actionselectcontour.h
    librecad/src/actions/drawing/selection/rs_actionselectintersected.cpp
    librecad/src/actions/drawing/selection/rs_actionselectintersected.h
    librecad/src/actions/drawing/selection/rs_actionselectinvert.cpp
    librecad/src/actions/drawing/selection/rs_actionselectinvert.h
    librecad/src/actions/drawing/selection/rs_actionselectlayer.cpp
    librecad/src/actions/drawing/selection/rs_actionselectlayer.h
    librecad/src/actions/drawing/selection/rs_actionselectsingle.cpp
    librecad/src/actions/drawing/selection/rs_actionselectsingle.h
    librecad/src/actions/drawing/selection/rs_actionselectwindow.cpp
    librecad/src/actions/drawing/selection/rs_actionselectwindow.h
    librecad/src/actions/drawing/snap/lc_actionsnapmiddlemanual.cpp
    librecad/src/actions/drawing/snap/rs_actionsnapintersectionmanual.cpp
    librecad/src/actions/drawing/snap/rs_actionsnapintersectionmanual.h
    librecad/src/actions/drawing/zoom/rs_actionzoomauto.cpp
    librecad/src/actions/drawing/zoom/rs_actionzoomauto.h
    librecad/src/actions/drawing/zoom/rs_actionzoomin.cpp
    librecad/src/actions/drawing/zoom/rs_actionzoomin.h
    librecad/src/actions/drawing/zoom/rs_actionzoompan.cpp
    librecad/src/actions/drawing/zoom/rs_actionzoompan.h
    librecad/src/actions/drawing/zoom/rs_actionzoomprevious.cpp
    librecad/src/actions/drawing/zoom/rs_actionzoomprevious.h
    librecad/src/actions/drawing/zoom/rs_actionzoomredraw.cpp
    librecad/src/actions/drawing/zoom/rs_actionzoomredraw.h
    librecad/src/actions/drawing/zoom/rs_actionzoomscroll.cpp
    librecad/src/actions/drawing/zoom/rs_actionzoomscroll.h
    librecad/src/actions/drawing/zoom/rs_actionzoomwindow.cpp
    librecad/src/actions/drawing/zoom/rs_actionzoomwindow.h
    librecad/src/actions/file/lc_actionfileexportmakercam.cpp
    librecad/src/actions/file/lc_actionfileexportmakercam.h
    librecad/src/actions/options/rs_actionoptionsdrawing.cpp
    librecad/src/actions/options/rs_actionoptionsdrawing.h
    librecad/src/actions/print_preview/rs_actionprintpreview.cpp
    librecad/src/actions/print_preview/rs_actionprintpreview.h
    librecad/src/cmd/lc_commandItems.h
    librecad/src/cmd/rs_commands.cpp
    librecad/src/cmd/rs_commands.h
    librecad/src/lib/actions/lc_actioncontext.cpp
    librecad/src/lib/actions/lc_actioncontext.h
    librecad/src/lib/actions/lc_actioninfomessagebuilder.cpp
    librecad/src/lib/actions/lc_actioninfomessagebuilder.h
    librecad/src/lib/actions/lc_actionpreselectionawarebase.cpp
    librecad/src/lib/actions/lc_actionpreselectionawarebase.h
    librecad/src/lib/actions/lc_modifiersinfo.cpp
    librecad/src/lib/actions/lc_modifiersinfo.h
    librecad/src/lib/actions/lc_overlayboxaction.cpp
    librecad/src/lib/actions/lc_overlayboxaction.h
    librecad/src/lib/actions/rs_actioninterface.cpp
    librecad/src/lib/actions/rs_actioninterface.h
    librecad/src/lib/actions/rs_actionselectbase.cpp
    librecad/src/lib/actions/rs_actionselectbase.h
    librecad/src/lib/actions/rs_previewactioninterface.cpp
    librecad/src/lib/actions/rs_previewactioninterface.h
    librecad/src/lib/actions/rs_snapper.cpp
    librecad/src/lib/actions/rs_snapper.h
    librecad/src/lib/creation/rs_creation.cpp
    librecad/src/lib/creation/rs_creation.h
    librecad/src/lib/debug/rs_debug.cpp
    librecad/src/lib/debug/rs_debug.h
    librecad/src/lib/engine/clipboard/rs_clipboard.cpp
    librecad/src/lib/engine/clipboard/rs_clipboard.h
    librecad/src/lib/engine/document/blocks/rs_block.cpp
    librecad/src/lib/engine/document/blocks/rs_block.h
    librecad/src/lib/engine/document/blocks/rs_blocklist.cpp
    librecad/src/lib/engine/document/blocks/rs_blocklist.h
    librecad/src/lib/engine/document/blocks/rs_blocklistlistener.h
    librecad/src/lib/engine/document/container/lc_containertraverser.cpp
    librecad/src/lib/engine/document/container/lc_containertraverser.h
    librecad/src/lib/engine/document/container/lc_looputils.cpp
    librecad/src/lib/engine/document/container/lc_looputils.h
    librecad/src/lib/engine/document/container/rs_entitycontainer.cpp
    librecad/src/lib/engine/document/container/rs_entitycontainer.h
    librecad/src/lib/engine/document/dimstyles/lc_dimarrowregistry.cpp
    librecad/src/lib/engine/document/dimstyles/lc_dimarrowregistry.h
    librecad/src/lib/engine/document/dimstyles/lc_dimstyle.cpp
    librecad/src/lib/engine/document/dimstyles/lc_dimstyle.h
    librecad/src/lib/engine/document/dimstyles/lc_dimstyleslist.cpp
    librecad/src/lib/engine/document/dimstyles/lc_dimstyleslist.h
    librecad/src/lib/engine/document/dimstyles/lc_dimstyletovariablesmapper.cpp
    librecad/src/lib/engine/document/dimstyles/lc_dimstyletovariablesmapper.h
    librecad/src/lib/engine/document/dxf_format.h
    librecad/src/lib/engine/document/entities/lc_cachedlengthentity.cpp
    librecad/src/lib/engine/document/entities/lc_cachedlengthentity.h
    librecad/src/lib/engine/document/entities/lc_dimarc.cpp
    librecad/src/lib/engine/document/entities/lc_dimarc.h
    librecad/src/lib/engine/document/entities/lc_dimordinate.cpp
    librecad/src/lib/engine/document/entities/lc_dimordinate.h
    librecad/src/lib/engine/document/entities/lc_extentitydata.cpp
    librecad/src/lib/engine/document/entities/lc_extentitydata.h
    librecad/src/lib/engine/document/entities/lc_hyperbola.cpp
    librecad/src/lib/engine/document/entities/lc_hyperbola.h
    librecad/src/lib/engine/document/entities/lc_parabola.cpp
    librecad/src/lib/engine/document/entities/lc_rect.cpp
    librecad/src/lib/engine/document/entities/lc_rect.h
    librecad/src/lib/engine/document/entities/lc_splinehelper.cpp
    librecad/src/lib/engine/document/entities/lc_splinehelper.h
    librecad/src/lib/engine/document/entities/lc_splinepoints.cpp
    librecad/src/lib/engine/document/entities/lc_splinepoints.h
    librecad/src/lib/engine/document/entities/lc_tolerance.cpp
    librecad/src/lib/engine/document/entities/lc_tolerance.h
    librecad/src/lib/engine/document/entities/rs_arc.cpp
    librecad/src/lib/engine/document/entities/rs_arc.h
    librecad/src/lib/engine/document/entities/rs_atomicentity.cpp
    librecad/src/lib/engine/document/entities/rs_atomicentity.h
    librecad/src/lib/engine/document/entities/rs_circle.cpp
    librecad/src/lib/engine/document/entities/rs_circle.h
    librecad/src/lib/engine/document/entities/rs_constructionline.cpp
    librecad/src/lib/engine/document/entities/rs_constructionline.h
    librecad/src/lib/engine/document/entities/rs_dimaligned.cpp
    librecad/src/lib/engine/document/entities/rs_dimaligned.h
    librecad/src/lib/engine/document/entities/rs_dimangular.cpp
    librecad/src/lib/engine/document/entities/rs_dimangular.h
    librecad/src/lib/engine/document/entities/rs_dimdiametric.cpp
    librecad/src/lib/engine/document/entities/rs_dimdiametric.h
    librecad/src/lib/engine/document/entities/rs_dimension.cpp
    librecad/src/lib/engine/document/entities/rs_dimension.h
    librecad/src/lib/engine/document/entities/rs_dimlinear.cpp
    librecad/src/lib/engine/document/entities/rs_dimlinear.h
    librecad/src/lib/engine/document/entities/rs_dimradial.cpp
    librecad/src/lib/engine/document/entities/rs_dimradial.h
    librecad/src/lib/engine/document/entities/rs_ellipse.cpp
    librecad/src/lib/engine/document/entities/rs_ellipse.h
    librecad/src/lib/engine/document/entities/rs_entity.cpp
    librecad/src/lib/engine/document/entities/rs_entity.h
    librecad/src/lib/engine/document/entities/rs_hatch.cpp
    librecad/src/lib/engine/document/entities/rs_hatch.h
    librecad/src/lib/engine/document/entities/rs_image.cpp
    librecad/src/lib/engine/document/entities/rs_image.h
    librecad/src/lib/engine/document/entities/rs_insert.cpp
    librecad/src/lib/engine/document/entities/rs_insert.h
    librecad/src/lib/engine/document/entities/rs_leader.cpp
    librecad/src/lib/engine/document/entities/rs_leader.h
    librecad/src/lib/engine/document/entities/rs_line.cpp
    librecad/src/lib/engine/document/entities/rs_line.h
    librecad/src/lib/engine/document/entities/rs_mtext.cpp
    librecad/src/lib/engine/document/entities/rs_mtext.h
    librecad/src/lib/engine/document/entities/rs_point.cpp
    librecad/src/lib/engine/document/entities/rs_point.h
    librecad/src/lib/engine/document/entities/rs_polyline.cpp
    librecad/src/lib/engine/document/entities/rs_polyline.h
    librecad/src/lib/engine/document/entities/rs_solid.cpp
    librecad/src/lib/engine/document/entities/rs_solid.h
    librecad/src/lib/engine/document/entities/rs_spline.cpp
    librecad/src/lib/engine/document/entities/rs_spline.h
    librecad/src/lib/engine/document/entities/rs_text.cpp
    librecad/src/lib/engine/document/entities/rs_text.h
    librecad/src/lib/engine/document/entities/support/lc_arrow_box.cpp
    librecad/src/lib/engine/document/entities/support/lc_arrow_box.h
    librecad/src/lib/engine/document/entities/support/lc_arrow_circle.cpp
    librecad/src/lib/engine/document/entities/support/lc_arrow_circle.h
    librecad/src/lib/engine/document/entities/support/lc_arrow_datum.cpp
    librecad/src/lib/engine/document/entities/support/lc_arrow_datum.h
    librecad/src/lib/engine/document/entities/support/lc_arrow_dot.cpp
    librecad/src/lib/engine/document/entities/support/lc_arrow_dot.h
    librecad/src/lib/engine/document/entities/support/lc_arrow_headclosed.cpp
    librecad/src/lib/engine/document/entities/support/lc_arrow_headclosed.h
    librecad/src/lib/engine/document/entities/support/lc_arrow_headclosed2.cpp
    librecad/src/lib/engine/document/entities/support/lc_arrow_headclosed2.h
    librecad/src/lib/engine/document/entities/support/lc_arrow_headclosed_blank.cpp
    librecad/src/lib/engine/document/entities/support/lc_arrow_headclosed_blank.h
    librecad/src/lib/engine/document/entities/support/lc_arrow_headopen.cpp
    librecad/src/lib/engine/document/entities/support/lc_arrow_headopen.h
    librecad/src/lib/engine/document/entities/support/lc_arrow_integral.cpp
    librecad/src/lib/engine/document/entities/support/lc_arrow_integral.h
    librecad/src/lib/engine/document/entities/support/lc_arrow_none.cpp
    librecad/src/lib/engine/document/entities/support/lc_arrow_none.h
    librecad/src/lib/engine/document/entities/support/lc_arrow_tick.cpp
    librecad/src/lib/engine/document/entities/support/lc_arrow_tick.h
    librecad/src/lib/engine/document/entities/support/lc_dimarrowblock.cpp
    librecad/src/lib/engine/document/entities/support/lc_dimarrowblock.h
    librecad/src/lib/engine/document/entities/support/lc_dimarrowblockpoly.cpp
    librecad/src/lib/engine/document/entities/support/lc_dimarrowblockpoly.h
    librecad/src/lib/engine/document/fonts/rs_font.cpp
    librecad/src/lib/engine/document/fonts/rs_font.h
    librecad/src/lib/engine/document/fonts/rs_fontchar.h
    librecad/src/lib/engine/document/fonts/rs_fontlist.cpp
    librecad/src/lib/engine/document/fonts/rs_fontlist.h
    librecad/src/lib/engine/document/layers/rs_layer.cpp
    librecad/src/lib/engine/document/layers/rs_layer.h
    librecad/src/lib/engine/document/layers/rs_layerlist.cpp
    librecad/src/lib/engine/document/layers/rs_layerlist.h
    librecad/src/lib/engine/document/layers/rs_layerlistlistener.h
    librecad/src/lib/engine/document/lc_graphicvariables.cpp
    librecad/src/lib/engine/document/lc_graphicvariables.h
    librecad/src/lib/engine/document/patterns/rs_pattern.cpp
    librecad/src/lib/engine/document/patterns/rs_pattern.h
    librecad/src/lib/engine/document/patterns/rs_patternlist.cpp
    librecad/src/lib/engine/document/patterns/rs_patternlist.h
    librecad/src/lib/engine/document/rs_document.cpp
    librecad/src/lib/engine/document/rs_document.h
    librecad/src/lib/engine/document/rs_graphic.cpp
    librecad/src/lib/engine/document/rs_graphic.h
    librecad/src/lib/engine/document/textstyles/lc_textstyle.cpp
    librecad/src/lib/engine/document/textstyles/lc_textstyle.h
    librecad/src/lib/engine/document/textstyles/lc_textstylelist.cpp
    librecad/src/lib/engine/document/textstyles/lc_textstylelist.h
    librecad/src/lib/engine/document/ucs/lc_ucs.cpp
    librecad/src/lib/engine/document/ucs/lc_ucs.h
    librecad/src/lib/engine/document/ucs/lc_ucslist.cpp
    librecad/src/lib/engine/document/ucs/lc_ucslist.h
    librecad/src/lib/engine/document/variables/rs_variable.h
    librecad/src/lib/engine/document/variables/rs_variabledict.cpp
    librecad/src/lib/engine/document/variables/rs_variabledict.h
    librecad/src/lib/engine/document/views/lc_view.cpp
    librecad/src/lib/engine/document/views/lc_view.h
    librecad/src/lib/engine/document/views/lc_viewslist.cpp
    librecad/src/lib/engine/document/views/lc_viewslist.h
    librecad/src/lib/engine/lc_defaults.h
    librecad/src/lib/engine/lc_drawable.h
    librecad/src/lib/engine/overlays/angles_base/lc_overlayanglesbasemark.cpp
    librecad/src/lib/engine/overlays/angles_base/lc_overlayanglesbasemark.h
    librecad/src/lib/engine/overlays/crosshair/lc_crosshair.cpp
    librecad/src/lib/engine/overlays/highlight/lc_highlight.cpp
    librecad/src/lib/engine/overlays/info_cursor/lc_cursoroverlayinfo.cpp
    librecad/src/lib/engine/overlays/info_cursor/lc_cursoroverlayinfo.h
    librecad/src/lib/engine/overlays/lc_overlayentitiescontainer.cpp
    librecad/src/lib/engine/overlays/lc_overlayentitiescontainer.h
    librecad/src/lib/engine/overlays/lc_overlayentity.cpp
    librecad/src/lib/engine/overlays/lc_overlayentity.h
    librecad/src/lib/engine/overlays/lc_overlaysmanager.cpp
    librecad/src/lib/engine/overlays/lc_overlaysmanager.h
    librecad/src/lib/engine/overlays/overlay_box/rs_overlaybox.cpp
    librecad/src/lib/engine/overlays/overlay_box/rs_overlaybox.h
    librecad/src/lib/engine/overlays/preview/rs_preview.cpp
    librecad/src/lib/engine/overlays/preview/rs_preview.h
    librecad/src/lib/engine/overlays/references/lc_refarc.cpp
    librecad/src/lib/engine/overlays/references/lc_refarc.h
    librecad/src/lib/engine/overlays/references/lc_refcircle.cpp
    librecad/src/lib/engine/overlays/references/lc_refcircle.h
    librecad/src/lib/engine/overlays/references/lc_refconstructionline.cpp
    librecad/src/lib/engine/overlays/references/lc_refconstructionline.h
    librecad/src/lib/engine/overlays/references/lc_refellipse.cpp
    librecad/src/lib/engine/overlays/references/lc_refline.cpp
    librecad/src/lib/engine/overlays/references/lc_refline.h
    librecad/src/lib/engine/overlays/references/lc_refpoint.cpp
    librecad/src/lib/engine/overlays/references/lc_refpoint.h
    librecad/src/lib/engine/overlays/rs_overlayline.cpp
    librecad/src/lib/engine/overlays/rs_overlayline.h
    librecad/src/lib/engine/overlays/ucs_mark/lc_overlayrelativezero.cpp
    librecad/src/lib/engine/overlays/ucs_mark/lc_overlayrelativezero.h
    librecad/src/lib/engine/overlays/ucs_mark/lc_overlayucszero.cpp
    librecad/src/lib/engine/overlays/ucs_mark/lc_overlayucszero.h
    librecad/src/lib/engine/overlays/ucs_mark/lc_ucs_mark.cpp
    librecad/src/lib/engine/overlays/ucs_mark/lc_ucs_mark.h
    librecad/src/lib/engine/rs.cpp
    librecad/src/lib/engine/rs.h
    librecad/src/lib/engine/rs_color.cpp
    librecad/src/lib/engine/rs_color.h
    librecad/src/lib/engine/rs_flags.cpp
    librecad/src/lib/engine/rs_flags.h
    librecad/src/lib/engine/rs_pen.cpp
    librecad/src/lib/engine/rs_pen.h
    librecad/src/lib/engine/rs_system.cpp
    librecad/src/lib/engine/rs_system.h
    librecad/src/lib/engine/rs_units.cpp
    librecad/src/lib/engine/rs_units.h
    librecad/src/lib/engine/rs_vector.cpp
    librecad/src/lib/engine/rs_vector.h
    librecad/src/lib/engine/settings/lc_settingsexporter.cpp
    librecad/src/lib/engine/settings/lc_settingsexporter.h
    librecad/src/lib/engine/settings/rs_settings.cpp
    librecad/src/lib/engine/settings/rs_settings.h
    librecad/src/lib/engine/undo/lc_undoablerelzero.cpp
    librecad/src/lib/engine/undo/lc_undoablerelzero.h
    librecad/src/lib/engine/undo/lc_undosection.cpp
    librecad/src/lib/engine/undo/lc_undosection.h
    librecad/src/lib/engine/undo/rs_undo.cpp
    librecad/src/lib/engine/undo/rs_undo.h
    librecad/src/lib/engine/undo/rs_undoable.cpp
    librecad/src/lib/engine/undo/rs_undoable.h
    librecad/src/lib/engine/undo/rs_undocycle.cpp
    librecad/src/lib/engine/undo/rs_undocycle.h
    librecad/src/lib/engine/utils/lc_rectregion.cpp
    librecad/src/lib/engine/utils/lc_rectregion.h
    librecad/src/lib/engine/utils/lc_rtree.cpp
    librecad/src/lib/engine/utils/lc_rtree.h
    librecad/src/lib/engine/utils/rs_utility.cpp
    librecad/src/lib/engine/utils/rs_utility.h
    librecad/src/lib/fileio/lc_filenameselectionservice.cpp
    librecad/src/lib/fileio/lc_filenameselectionservice.h
    librecad/src/lib/fileio/rs_fileio.cpp
    librecad/src/lib/fileio/rs_fileio.h
    librecad/src/lib/filters/rs_filtercxf.cpp
    librecad/src/lib/filters/rs_filterdxf1.cpp
    librecad/src/lib/filters/rs_filterdxf1.h
    librecad/src/lib/filters/rs_filterdxfrw.cpp
    librecad/src/lib/filters/rs_filterdxfrw.h
    librecad/src/lib/filters/rs_filterinterface.h
    librecad/src/lib/filters/rs_filterjww.cpp
    librecad/src/lib/filters/rs_filterjww.h
    librecad/src/lib/filters/rs_filterlff.cpp
    librecad/src/lib/filters/rs_filterlff.h
    librecad/src/lib/generators/image/lc_imageexporter.cpp
    librecad/src/lib/generators/image/lc_imageexporter.h
    librecad/src/lib/generators/layers/lc_layersexporter.cpp
    librecad/src/lib/generators/layers/lc_layersexporter.h
    librecad/src/lib/generators/makercamsvg/lc_makercamsvg.cpp
    librecad/src/lib/generators/makercamsvg/lc_makercamsvg.h
    librecad/src/lib/generators/makercamsvg/lc_xmlwriterinterface.h
    librecad/src/lib/generators/makercamsvg/lc_xmlwriterqxmlstreamwriter.cpp
    librecad/src/lib/generators/makercamsvg/lc_xmlwriterqxmlstreamwriter.h
    librecad/src/lib/gui/grid/lc_gridsystem.cpp
    librecad/src/lib/gui/grid/lc_gridsystem.h
    librecad/src/lib/gui/grid/lc_isometricgrid.cpp
    librecad/src/lib/gui/grid/lc_lattice.cpp
    librecad/src/lib/gui/grid/lc_lattice.h
    librecad/src/lib/gui/grid/lc_orthogonalgrid.cpp
    librecad/src/lib/gui/grid/lc_orthogonalgrid.h
    librecad/src/lib/gui/grid/rs_grid.cpp
    librecad/src/lib/gui/grid/rs_grid.h
    librecad/src/lib/gui/lc_coordinates_mapper.cpp
    librecad/src/lib/gui/lc_coordinates_mapper.h
    librecad/src/lib/gui/lc_coordinates_parser.cpp
    librecad/src/lib/gui/lc_coordinates_parser.h
    librecad/src/lib/gui/lc_eventhandler.cpp
    librecad/src/lib/gui/lc_eventhandler.h
    librecad/src/lib/gui/lc_graphicviewport.cpp
    librecad/src/lib/gui/lc_graphicviewport.h
    librecad/src/lib/gui/lc_graphicviewportlistener.cpp
    librecad/src/lib/gui/lc_graphicviewportlistener.h
    librecad/src/lib/gui/lc_latecompletionrequestor.cpp
    librecad/src/lib/gui/lc_latecompletionrequestor.h
    librecad/src/lib/gui/render/headless/lc_printviewportrenderer.cpp
    librecad/src/lib/gui/render/headless/lc_printviewportrenderer.h
    librecad/src/lib/gui/render/lc_graphicviewportrenderer.cpp
    librecad/src/lib/gui/render/lc_graphicviewportrenderer.h
    librecad/src/lib/gui/render/rs_painter.cpp
    librecad/src/lib/gui/render/rs_painter.h
    librecad/src/lib/gui/render/widget/lc_graphicviewrenderer.cpp
    librecad/src/lib/gui/render/widget/lc_graphicviewrenderer.h
    librecad/src/lib/gui/render/widget/lc_printpreviewviewrenderer.cpp
    librecad/src/lib/gui/render/widget/lc_printpreviewviewrenderer.h
    librecad/src/lib/gui/render/widget/lc_widgetviewportrenderer.cpp
    librecad/src/lib/gui/render/widget/lc_widgetviewportrenderer.h
    librecad/src/lib/gui/rs_commandevent.h
    librecad/src/lib/gui/rs_coordinateevent.h
    librecad/src/lib/gui/rs_dialogfactory.cpp
    librecad/src/lib/gui/rs_dialogfactory.h
    librecad/src/lib/gui/rs_dialogfactoryinterface.h
    librecad/src/lib/gui/rs_graphicview.cpp
    librecad/src/lib/gui/rs_graphicview.h
    librecad/src/lib/gui/rs_linetypepattern.cpp
    librecad/src/lib/gui/rs_linetypepattern.h
    librecad/src/lib/gui/rs_mainwindowinterface.h
    librecad/src/lib/information/rs_infoarea.cpp
    librecad/src/lib/information/rs_infoarea.h
    librecad/src/lib/information/rs_information.cpp
    librecad/src/lib/information/rs_information.h
    librecad/src/lib/information/rs_locale.cpp
    librecad/src/lib/information/rs_locale.h
    librecad/src/lib/math/lc_convert.cpp
    librecad/src/lib/math/lc_convert.h
    librecad/src/lib/math/lc_linemath.cpp
    librecad/src/lib/math/lc_linemath.h
    librecad/src/lib/math/lc_quadratic.cpp
    librecad/src/lib/math/lc_quadratic.h
    librecad/src/lib/math/rs_math.cpp
    librecad/src/lib/math/rs_math.h
    librecad/src/lib/modification/lc_align.cpp
    librecad/src/lib/modification/lc_align.h
    librecad/src/lib/modification/lc_division.cpp
    librecad/src/lib/modification/lc_division.h
    librecad/src/lib/modification/rs_modification.cpp
    librecad/src/lib/modification/rs_modification.h
    librecad/src/lib/modification/rs_selection.cpp
    librecad/src/lib/modification/rs_selection.h
    librecad/src/lib/printing/lc_printing.cpp
    librecad/src/lib/printing/lc_printing.h
    librecad/src/lib/scripting/rs_python.cpp
    librecad/src/lib/scripting/rs_python.h
    librecad/src/lib/scripting/rs_python_wrappers.cpp
    librecad/src/lib/scripting/rs_python_wrappers.h
    librecad/src/lib/scripting/rs_script.cpp
    librecad/src/lib/scripting/rs_script.h
    librecad/src/lib/scripting/rs_scriptlist.cpp
    librecad/src/lib/scripting/rs_scriptlist.h
    librecad/src/lib/scripting/rs_simplepython.cpp
    librecad/src/lib/scripting/rs_simplepython.h
    librecad/src/main/doc_plugin_interface.cpp
    librecad/src/main/doc_plugin_interface.h
    librecad/src/main/lc_application.cpp
    librecad/src/main/lc_application.h
    librecad/src/main/qc_dialogfactory.cpp
    librecad/src/main/qc_dialogfactory.h
    librecad/src/plugins/document_interface.h
    librecad/src/plugins/intern/qc_actiongetent.cpp
    librecad/src/plugins/intern/qc_actiongetent.h
    librecad/src/plugins/intern/qc_actiongetpoint.cpp
    librecad/src/plugins/intern/qc_actiongetpoint.h
    librecad/src/plugins/intern/qc_actiongetselect.cpp
    librecad/src/plugins/intern/qc_actiongetselect.h
    librecad/src/plugins/lc_plugininvoker.cpp
    librecad/src/plugins/lc_plugininvoker.h
    librecad/src/plugins/qc_plugininterface.h
    librecad/src/ui/action_options/circle/lc_circlebyarcoptions.cpp
    librecad/src/ui/action_options/circle/qg_circleoptions.cpp
    librecad/src/ui/action_options/circle/qg_circleoptions.h
    librecad/src/ui/action_options/circle/qg_circletan2options.cpp
    librecad/src/ui/action_options/circle/qg_circletan2options.h
    librecad/src/ui/action_options/curve/lc_actiondrawarc2poptions.cpp
    librecad/src/ui/action_options/curve/lc_actiondrawarc2poptions.h
    librecad/src/ui/action_options/curve/lc_ellipsearcoptions.cpp
    librecad/src/ui/action_options/curve/qg_arcoptions.cpp
    librecad/src/ui/action_options/curve/qg_arcoptions.h
    librecad/src/ui/action_options/curve/qg_arctangentialoptions.cpp
    librecad/src/ui/action_options/curve/qg_arctangentialoptions.h
    librecad/src/ui/action_options/dimensions/qg_dimoptions.cpp
    librecad/src/ui/action_options/dimensions/qg_dimoptions.h
    librecad/src/ui/action_options/edit/lc_pastetransformoptions.cpp
    librecad/src/ui/action_options/ellipse/lc_ellipse1pointoptions.cpp
    librecad/src/ui/action_options/ellipse/lc_ellipse1pointoptions.h
    librecad/src/ui/action_options/image/qg_imageoptions.cpp
    librecad/src/ui/action_options/image/qg_imageoptions.h
    librecad/src/ui/action_options/info/lc_infodist2options.cpp
    librecad/src/ui/action_options/insert/qg_insertoptions.cpp
    librecad/src/ui/action_options/insert/qg_insertoptions.h
    librecad/src/ui/action_options/insert/qg_libraryinsertoptions.cpp
    librecad/src/ui/action_options/insert/qg_libraryinsertoptions.h
    librecad/src/ui/action_options/lc_actionoptionsmanager.cpp
    librecad/src/ui/action_options/lc_actionoptionsmanager.h
    librecad/src/ui/action_options/lc_actionoptionswidget.cpp
    librecad/src/ui/action_options/lc_actionoptionswidget.h
    librecad/src/ui/action_options/lc_actionoptionswidgetbase.cpp
    librecad/src/ui/action_options/lc_actionoptionswidgetbase.h
    librecad/src/ui/action_options/line/lc_lineanglereloptions.cpp
    librecad/src/ui/action_options/line/lc_linefrompointtolineoptions.cpp
    librecad/src/ui/action_options/line/lc_lineoptions.cpp
    librecad/src/ui/action_options/line/lc_slicedivideoptions.cpp
    librecad/src/ui/action_options/line/qg_lineangleoptions.cpp
    librecad/src/ui/action_options/line/qg_lineangleoptions.h
    librecad/src/ui/action_options/line/qg_linebisectoroptions.cpp
    librecad/src/ui/action_options/line/qg_linebisectoroptions.h
    librecad/src/ui/action_options/line/qg_lineoptions.cpp
    librecad/src/ui/action_options/line/qg_lineoptions.h
    librecad/src/ui/action_options/line/qg_lineparalleloptions.cpp
    librecad/src/ui/action_options/line/qg_lineparalleloptions.h
    librecad/src/ui/action_options/line/qg_lineparallelthroughoptions.cpp
    librecad/src/ui/action_options/line/qg_lineparallelthroughoptions.h
    librecad/src/ui/action_options/line/qg_linerelangleoptions.cpp
    librecad/src/ui/action_options/line/qg_linerelangleoptions.h
    librecad/src/ui/action_options/misc/lc_crossoptions.cpp
    librecad/src/ui/action_options/misc/lc_drawboundingboxoptions.cpp
    librecad/src/ui/action_options/misc/lc_drawboundingboxoptions.h
    librecad/src/ui/action_options/misc/lc_midlineoptions.cpp
    librecad/src/ui/action_options/misc/lc_midlineoptions.h
    librecad/src/ui/action_options/modify/lc_duplicateoptions.cpp
    librecad/src/ui/action_options/modify/lc_linejoinoptions.cpp
    librecad/src/ui/action_options/modify/lc_modifyalignoptions.cpp
    librecad/src/ui/action_options/modify/lc_modifyalignoptions.h
    librecad/src/ui/action_options/modify/lc_modifyalignrefoptions.cpp
    librecad/src/ui/action_options/modify/lc_modifyalignrefoptions.h
    librecad/src/ui/action_options/modify/lc_modifybreakdivideoptions.cpp
    librecad/src/ui/action_options/modify/lc_modifybreakdivideoptions.h
    librecad/src/ui/action_options/modify/lc_modifygapoptions.cpp
    librecad/src/ui/action_options/modify/lc_modifygapoptions.h
    librecad/src/ui/action_options/modify/lc_modifymirroroptions.cpp
    librecad/src/ui/action_options/modify/lc_modifyrotateoptions.cpp
    librecad/src/ui/action_options/modify/lc_modifyscaleoptions.cpp
    librecad/src/ui/action_options/modify/lc_modifyscaleoptions.h
    librecad/src/ui/action_options/modify/lc_modifystretchoptions.cpp
    librecad/src/ui/action_options/modify/lc_modifystretchoptions.h
    librecad/src/ui/action_options/modify/lc_moveoptions.cpp
    librecad/src/ui/action_options/modify/lc_moveoptions.h
    librecad/src/ui/action_options/modify/lc_rotate2options.cpp
    librecad/src/ui/action_options/modify/lc_rotate2options.h
    librecad/src/ui/action_options/modify/qg_beveloptions.cpp
    librecad/src/ui/action_options/modify/qg_beveloptions.h
    librecad/src/ui/action_options/modify/qg_modifyoffsetoptions.cpp
    librecad/src/ui/action_options/modify/qg_modifyoffsetoptions.h
    librecad/src/ui/action_options/modify/qg_moverotateoptions.cpp
    librecad/src/ui/action_options/modify/qg_moverotateoptions.h
    librecad/src/ui/action_options/modify/qg_roundoptions.cpp
    librecad/src/ui/action_options/modify/qg_roundoptions.h
    librecad/src/ui/action_options/modify/qg_trimamountoptions.cpp
    librecad/src/ui/action_options/modify/qg_trimamountoptions.h
    librecad/src/ui/action_options/other/lc_ucssetoptions.cpp
    librecad/src/ui/action_options/other/lc_ucssetoptions.h
    librecad/src/ui/action_options/point/lc_linepointsoptions.cpp
    librecad/src/ui/action_options/point/lc_linepointsoptions.h
    librecad/src/ui/action_options/point/lc_pastetopointsoptions.cpp
    librecad/src/ui/action_options/point/lc_pastetopointsoptions.h
    librecad/src/ui/action_options/point/lc_pointslatticeoptions.cpp
    librecad/src/ui/action_options/point/lc_pointslatticeoptions.h
    librecad/src/ui/action_options/polygon/lc_staroptions.cpp
    librecad/src/ui/action_options/polygon/qg_linepolygonoptions.cpp
    librecad/src/ui/action_options/polygon/qg_linepolygonoptions.h
    librecad/src/ui/action_options/polyline/qg_polylineequidistantoptions.cpp
    librecad/src/ui/action_options/polyline/qg_polylineequidistantoptions.h
    librecad/src/ui/action_options/polyline/qg_polylineoptions.cpp
    librecad/src/ui/action_options/polyline/qg_polylineoptions.h
    librecad/src/ui/action_options/print_preview/qg_printpreviewoptions.cpp
    librecad/src/ui/action_options/print_preview/qg_printpreviewoptions.h
    librecad/src/ui/action_options/rect/lc_rectangle1pointoptions.cpp
    librecad/src/ui/action_options/rect/lc_rectangle2pointsoptions.cpp
    librecad/src/ui/action_options/rect/lc_rectangle2pointsoptions.h
    librecad/src/ui/action_options/rect/lc_rectangle3pointsoptions.cpp
    librecad/src/ui/action_options/selection/lc_selectwindowoptions.cpp
    librecad/src/ui/action_options/selection/lc_selectwindowoptions.h
    librecad/src/ui/action_options/snap/qg_snapdistoptions.cpp
    librecad/src/ui/action_options/snap/qg_snapdistoptions.h
    librecad/src/ui/action_options/snap/qg_snapmiddleoptions.cpp
    librecad/src/ui/action_options/snap/qg_snapmiddleoptions.h
    librecad/src/ui/action_options/spline/lc_splineexplodeoptions.cpp
    librecad/src/ui/action_options/spline/lc_splineexplodeoptions.h
    librecad/src/ui/action_options/spline/lc_splinefrompolylineoptions.cpp
    librecad/src/ui/action_options/spline/lc_splinefrompolylineoptions.h
    librecad/src/ui/action_options/spline/qg_splineoptions.cpp
    librecad/src/ui/action_options/spline/qg_splineoptions.h
    librecad/src/ui/action_options/text/qg_mtextoptions.cpp
    librecad/src/ui/action_options/text/qg_mtextoptions.h
    librecad/src/ui/action_options/text/qg_textoptions.cpp
    librecad/src/ui/action_options/text/qg_textoptions.h
    librecad/src/ui/actions/lc_actionfactorybase.cpp
    librecad/src/ui/actions/lc_actionfactorybase.h
    librecad/src/ui/actions/lc_actiongroup.cpp
    librecad/src/ui/actions/lc_actiongroup.h
    librecad/src/ui/actions/lc_actiongroupmanager.cpp
    librecad/src/ui/actions/lc_actiongroupmanager.h
    librecad/src/ui/actions/lc_shortcutinfo.cpp
    librecad/src/ui/actions/lc_shortcutinfo.h
    librecad/src/ui/actions/lc_shortcuts_manager.cpp
    librecad/src/ui/actions/lc_shortcuts_manager.h
    librecad/src/ui/actions/lc_shortcutsstorage.cpp
    librecad/src/ui/actions/lc_shortcutsstorage.h
    librecad/src/ui/components/comboboxes/comboboxoption.cpp
    librecad/src/ui/components/comboboxes/comboboxoption.h
    librecad/src/ui/components/comboboxes/qg_colorbox.cpp
    librecad/src/ui/components/comboboxes/qg_colorbox.h
    librecad/src/ui/components/comboboxes/qg_fontbox.cpp
    librecad/src/ui/components/comboboxes/qg_fontbox.h
    librecad/src/ui/components/comboboxes/qg_layerbox.cpp
    librecad/src/ui/components/comboboxes/qg_layerbox.h
    librecad/src/ui/components/comboboxes/qg_linetypebox.cpp
    librecad/src/ui/components/comboboxes/qg_linetypebox.h
    librecad/src/ui/components/comboboxes/qg_patternbox.cpp
    librecad/src/ui/components/comboboxes/qg_patternbox.h
    librecad/src/ui/components/comboboxes/qg_widthbox.cpp
    librecad/src/ui/components/comboboxes/qg_widthbox.h
    librecad/src/ui/components/containers/lc_optionswidgetsholder.cpp
    librecad/src/ui/components/containers/lc_optionswidgetsholder.h
    librecad/src/ui/components/containers/lc_snapoptionswidgetsholder.cpp
    librecad/src/ui/components/containers/lc_snapoptionswidgetsholder.h
    librecad/src/ui/components/creators/actionlist.cpp
    librecad/src/ui/components/creators/actionlist.h
    librecad/src/ui/components/creators/lc_creatorinvoker.cpp
    librecad/src/ui/components/creators/lc_creatorinvoker.h
    librecad/src/ui/components/creators/lc_menuactivator.cpp
    librecad/src/ui/components/creators/lc_menuactivator.h
    librecad/src/ui/components/layouts/lc_flexlayout.cpp
    librecad/src/ui/components/layouts/lc_flexlayout.h
    librecad/src/ui/components/lc_plaintextedit.h
    librecad/src/ui/components/pen/qg_widgetpen.cpp
    librecad/src/ui/components/pen/qg_widgetpen.h
    librecad/src/ui/components/qg_scrollbar.h
    librecad/src/ui/components/status_bar/lc_anglesbasiswidget.cpp
    librecad/src/ui/components/status_bar/lc_anglesbasiswidget.h
    librecad/src/ui/components/status_bar/lc_qtstatusbarmanager.cpp
    librecad/src/ui/components/status_bar/lc_qtstatusbarmanager.h
    librecad/src/ui/components/status_bar/lc_relzerocoordinateswidget.cpp
    librecad/src/ui/components/status_bar/lc_relzerocoordinateswidget.h
    librecad/src/ui/components/status_bar/lc_ucsstatewidget.cpp
    librecad/src/ui/components/status_bar/lc_ucsstatewidget.h
    librecad/src/ui/components/status_bar/qg_activelayername.cpp
    librecad/src/ui/components/status_bar/qg_activelayername.h
    librecad/src/ui/components/status_bar/qg_coordinatewidget.cpp
    librecad/src/ui/components/status_bar/qg_coordinatewidget.h
    librecad/src/ui/components/status_bar/qg_mousewidget.cpp
    librecad/src/ui/components/status_bar/qg_mousewidget.h
    librecad/src/ui/components/status_bar/qg_selectionwidget.cpp
    librecad/src/ui/components/status_bar/qg_selectionwidget.h
    librecad/src/ui/components/status_bar/twostackedlabels.cpp
    librecad/src/ui/components/status_bar/twostackedlabels.h
    librecad/src/ui/components/textfileviewer.cpp
    librecad/src/ui/components/textfileviewer.h
    librecad/src/ui/components/toolbars/qg_pentoolbar.cpp
    librecad/src/ui/components/toolbars/qg_pentoolbar.h
    librecad/src/ui/components/toolbars/qg_snaptoolbar.cpp
    librecad/src/ui/components/toolbars/qg_snaptoolbar.h
    librecad/src/ui/dialogs/actions/modify/qg_dlgmirror.cpp
    librecad/src/ui/dialogs/actions/modify/qg_dlgmirror.h
    librecad/src/ui/dialogs/actions/modify/qg_dlgmove.cpp
    librecad/src/ui/dialogs/actions/modify/qg_dlgmove.h
    librecad/src/ui/dialogs/actions/modify/qg_dlgmoverotate.cpp
    librecad/src/ui/dialogs/actions/modify/qg_dlgmoverotate.h
    librecad/src/ui/dialogs/actions/modify/qg_dlgrotate.cpp
    librecad/src/ui/dialogs/actions/modify/qg_dlgrotate.h
    librecad/src/ui/dialogs/actions/modify/qg_dlgrotate2.cpp
    librecad/src/ui/dialogs/actions/modify/qg_dlgrotate2.h
    librecad/src/ui/dialogs/actions/modify/qg_dlgscale.cpp
    librecad/src/ui/dialogs/actions/modify/qg_dlgscale.h
    librecad/src/ui/dialogs/actions/qg_layerdialog.cpp
    librecad/src/ui/dialogs/actions/qg_layerdialog.h
    librecad/src/ui/dialogs/creators/lc_dlgmenuassigner.cpp
    librecad/src/ui/dialogs/creators/lc_dlgmenuassigner.h
    librecad/src/ui/dialogs/creators/lc_dlgnewwidget.cpp
    librecad/src/ui/dialogs/creators/lc_dlgnewwidget.h
    librecad/src/ui/dialogs/creators/lc_dlgwidgetcreator.cpp
    librecad/src/ui/dialogs/creators/lc_dlgwidgetcreator.h
    librecad/src/ui/dialogs/entity/lc_arcpropertieseditingwidget.cpp
    librecad/src/ui/dialogs/entity/lc_arcpropertieseditingwidget.h
    librecad/src/ui/dialogs/entity/lc_circlepropertieseditingwidget.cpp
    librecad/src/ui/dialogs/entity/lc_circlepropertieseditingwidget.h
    librecad/src/ui/dialogs/entity/lc_dlgdimension.cpp
    librecad/src/ui/dialogs/entity/lc_dlgdimension.h
    librecad/src/ui/dialogs/entity/lc_dlgentityproperties.cpp
    librecad/src/ui/dialogs/entity/lc_dlgentityproperties.h
    librecad/src/ui/dialogs/entity/lc_dlgtolerance.cpp
    librecad/src/ui/dialogs/entity/lc_dlgtolerance.h
    librecad/src/ui/dialogs/entity/lc_ellipsepropertieseditingwidget.cpp
    librecad/src/ui/dialogs/entity/lc_ellipsepropertieseditingwidget.h
    librecad/src/ui/dialogs/entity/lc_entitypropertiesdlg.cpp
    librecad/src/ui/dialogs/entity/lc_entitypropertiesdlg.h
    librecad/src/ui/dialogs/entity/lc_entitypropertieseditor.cpp
    librecad/src/ui/dialogs/entity/lc_entitypropertieseditor.h
    librecad/src/ui/dialogs/entity/lc_entitypropertieseditorsupport.cpp
    librecad/src/ui/dialogs/entity/lc_entitypropertieseditorsupport.h
    librecad/src/ui/dialogs/entity/lc_entitypropertieseditorwidget.cpp
    librecad/src/ui/dialogs/entity/lc_entitypropertieseditorwidget.h
    librecad/src/ui/dialogs/entity/lc_imagepropertieseditingwidget.cpp
    librecad/src/ui/dialogs/entity/lc_imagepropertieseditingwidget.h
    librecad/src/ui/dialogs/entity/lc_insertpropertieseditingwidget.cpp
    librecad/src/ui/dialogs/entity/lc_insertpropertieseditingwidget.h
    librecad/src/ui/dialogs/entity/lc_linepropertieseditingwidget.cpp
    librecad/src/ui/dialogs/entity/lc_linepropertieseditingwidget.h
    librecad/src/ui/dialogs/entity/lc_parabolapropertieseditingwidget.cpp
    librecad/src/ui/dialogs/entity/lc_parabolapropertieseditingwidget.h
    librecad/src/ui/dialogs/entity/lc_pointpickbutton.cpp
    librecad/src/ui/dialogs/entity/lc_pointpickbutton.h
    librecad/src/ui/dialogs/entity/lc_pointpropertieseditingwidget.cpp
    librecad/src/ui/dialogs/entity/lc_pointpropertieseditingwidget.h
    librecad/src/ui/dialogs/entity/lc_polylinepropertieseditingwidget.cpp
    librecad/src/ui/dialogs/entity/lc_polylinepropertieseditingwidget.h
    librecad/src/ui/dialogs/entity/lc_splinepointspropertieseditingwidget.cpp
    librecad/src/ui/dialogs/entity/lc_splinepointspropertieseditingwidget.h
    librecad/src/ui/dialogs/entity/lc_splinepropertieseditingwidget.cpp
    librecad/src/ui/dialogs/entity/lc_splinepropertieseditingwidget.h
    librecad/src/ui/dialogs/entity/qg_blockdialog.cpp
    librecad/src/ui/dialogs/entity/qg_blockdialog.h
    librecad/src/ui/dialogs/entity/qg_dimensionlabeleditor.cpp
    librecad/src/ui/dialogs/entity/qg_dimensionlabeleditor.h
    librecad/src/ui/dialogs/entity/qg_dlgattributes.cpp
    librecad/src/ui/dialogs/entity/qg_dlgattributes.h
    librecad/src/ui/dialogs/entity/qg_dlghatch.cpp
    librecad/src/ui/dialogs/entity/qg_dlghatch.h
    librecad/src/ui/dialogs/entity/qg_dlgmtext.cpp
    librecad/src/ui/dialogs/entity/qg_dlgmtext.h
    librecad/src/ui/dialogs/entity/qg_dlgtext.cpp
    librecad/src/ui/dialogs/entity/qg_dlgtext.h
    librecad/src/ui/dialogs/file/export/image/lc_exporttoimageservice.cpp
    librecad/src/ui/dialogs/file/export/image/lc_exporttoimageservice.h
    librecad/src/ui/dialogs/file/export/image/qg_dlgimageoptions.cpp
    librecad/src/ui/dialogs/file/export/image/qg_dlgimageoptions.h
    librecad/src/ui/dialogs/file/export/layers/lc_exportlayersdialogservice.cpp
    librecad/src/ui/dialogs/file/export/layers/lc_exportlayersdialogservice.h
    librecad/src/ui/dialogs/file/export/layers/lc_filedialogservice.cpp
    librecad/src/ui/dialogs/file/export/layers/lc_filedialogservice.h
    librecad/src/ui/dialogs/file/export/layers/lc_layerexportoptions.cpp
    librecad/src/ui/dialogs/file/export/layers/lc_layerexportoptions.h
    librecad/src/ui/dialogs/file/export/makercam/qg_dlgoptionsmakercam.cpp
    librecad/src/ui/dialogs/file/export/makercam/qg_dlgoptionsmakercam.h
    librecad/src/ui/dialogs/file/qg_filedialog.cpp
    librecad/src/ui/dialogs/file/qg_filedialog.h
    librecad/src/ui/dialogs/lc_dialog.cpp
    librecad/src/ui/dialogs/lc_dialog.h
    librecad/src/ui/dialogs/lc_inputtextdialog.cpp
    librecad/src/ui/dialogs/lc_inputtextdialog.h
    librecad/src/ui/dialogs/main/lc_dlgabout.cpp
    librecad/src/ui/dialogs/main/lc_dlgnewversionavailable.cpp
    librecad/src/ui/dialogs/main/lc_dlgnewversionavailable.h
    librecad/src/ui/dialogs/main/qg_exitdialog.cpp
    librecad/src/ui/dialogs/main/qg_exitdialog.h
    librecad/src/ui/dialogs/qg_dialogfactory.cpp
    librecad/src/ui/dialogs/qg_dialogfactory.h
    librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager/lc_dlgdimstylemanager.cpp
    librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager/lc_dlgdimstylemanager.h
    librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager/support/lc_dimstylepreviewgraphicview.cpp
    librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager/support/lc_dimstylepreviewgraphicview.h
    librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager/support/lc_dimstylepreviewpanel.cpp
    librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager/support/lc_dimstylepreviewpanel.h
    librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager/support/lc_tabproxywidget.cpp
    librecad/src/ui/dialogs/settings/dimstyles/dimstyle_manager/support/lc_tabproxywidget.h
    librecad/src/ui/dialogs/settings/dimstyles/lc_dimstyleitem.cpp
    librecad/src/ui/dialogs/settings/dimstyles/lc_dimstyleslistmodel.cpp
    librecad/src/ui/dialogs/settings/dimstyles/lc_dimstyleslistmodel.h
    librecad/src/ui/dialogs/settings/dimstyles/lc_dimstylestreemodel.cpp
    librecad/src/ui/dialogs/settings/dimstyles/lc_dimstylestreemodel.h
    librecad/src/ui/dialogs/settings/options_device/lc_deviceoptions.cpp
    librecad/src/ui/dialogs/settings/options_device/lc_deviceoptions.h
    librecad/src/ui/dialogs/settings/options_drawing/lc_dimstylesexporter.cpp
    librecad/src/ui/dialogs/settings/options_drawing/lc_dimstylesexporter.h
    librecad/src/ui/dialogs/settings/options_drawing/lc_dlgnewcustomvariable.cpp
    librecad/src/ui/dialogs/settings/options_drawing/lc_dlgnewcustomvariable.h
    librecad/src/ui/dialogs/settings/options_drawing/lc_dlgnewdimstyle.cpp
    librecad/src/ui/dialogs/settings/options_drawing/lc_dlgnewdimstyle.h
    librecad/src/ui/dialogs/settings/options_drawing/lg_dimzerosbox.cpp
    librecad/src/ui/dialogs/settings/options_drawing/lg_dimzerosbox.h
    librecad/src/ui/dialogs/settings/options_drawing/qg_dlgoptionsdrawing.cpp
    librecad/src/ui/dialogs/settings/options_drawing/qg_dlgoptionsdrawing.h
    librecad/src/ui/dialogs/settings/options_general/qg_dlgoptionsgeneral.cpp
    librecad/src/ui/dialogs/settings/options_general/qg_dlgoptionsgeneral.h
    librecad/src/ui/dialogs/settings/options_widget/lc_dlgiconssetup.cpp
    librecad/src/ui/dialogs/settings/options_widget/lc_iconcolorsoptions.cpp
    librecad/src/ui/dialogs/settings/options_widget/lc_iconcolorsoptions.h
    librecad/src/ui/dialogs/settings/options_widget/lc_iconengineshared.cpp
    librecad/src/ui/dialogs/settings/options_widget/lc_widgetoptionsdialog.cpp
    librecad/src/ui/dialogs/settings/options_widget/lc_widgetoptionsdialog.h
    librecad/src/ui/dialogs/settings/shortcuts/lc_actionsshortcutsdialog.cpp
    librecad/src/ui/dialogs/settings/shortcuts/lc_actionsshortcutsdialog.h
    librecad/src/ui/dialogs/settings/shortcuts/lc_shortcutbutton.cpp
    librecad/src/ui/dialogs/settings/shortcuts/lc_shortcutbutton.h
    librecad/src/ui/dialogs/settings/shortcuts/lc_shortcutstreemodel.cpp
    librecad/src/ui/dialogs/settings/shortcuts/lc_shortcutstreemodel.h
    librecad/src/ui/dialogs/settings/shortcuts/lc_shortcutstreeview.cpp
    librecad/src/ui/dialogs/settings/shortcuts/lc_shortcutstreeview.h
    librecad/src/ui/dialogs/settings/shortcuts/lc_shortcuttreeitem.cpp
    librecad/src/ui/dialogs/settings/shortcuts/lc_shortcuttreeitem.h
    librecad/src/ui/dock_widgets/block_widget/qg_blockwidget.cpp
    librecad/src/ui/dock_widgets/block_widget/qg_blockwidget.h
    librecad/src/ui/dock_widgets/cad/lc_caddockwidget.cpp
    librecad/src/ui/dock_widgets/cad/lc_caddockwidget.h
    librecad/src/ui/dock_widgets/command_line/qg_commandedit.cpp
    librecad/src/ui/dock_widgets/command_line/qg_commandedit.h
    librecad/src/ui/dock_widgets/command_line/qg_commandhistory.cpp
    librecad/src/ui/dock_widgets/command_line/qg_commandhistory.h
    librecad/src/ui/dock_widgets/command_line/qg_commandwidget.cpp
    librecad/src/ui/dock_widgets/command_line/qg_commandwidget.h
    librecad/src/ui/dock_widgets/entity_info/lc_quickinfobasedata.cpp
    librecad/src/ui/dock_widgets/entity_info/lc_quickinfoentitydata.cpp
    librecad/src/ui/dock_widgets/entity_info/lc_quickinfopointsdata.cpp
    librecad/src/ui/dock_widgets/entity_info/lc_quickinfopointsdata.h
    librecad/src/ui/dock_widgets/entity_info/lc_quickinfowidget.cpp
    librecad/src/ui/dock_widgets/entity_info/lc_quickinfowidgetoptions.cpp
    librecad/src/ui/dock_widgets/entity_info/lc_quickinfowidgetoptions.h
    librecad/src/ui/dock_widgets/entity_info/lc_quickinfowidgetoptionsdialog.cpp
    librecad/src/ui/dock_widgets/layer_widget/qg_layerwidget.cpp
    librecad/src/ui/dock_widgets/layer_widget/qg_layerwidget.h
    librecad/src/ui/dock_widgets/layers_tree/lc_layerdialog_ex.cpp
    librecad/src/ui/dock_widgets/layers_tree/lc_layerdialog_ex.h
    librecad/src/ui/dock_widgets/layers_tree/lc_layertreeitem.cpp
    librecad/src/ui/dock_widgets/layers_tree/lc_layertreeitem.h
    librecad/src/ui/dock_widgets/layers_tree/lc_layertreemodel.cpp
    librecad/src/ui/dock_widgets/layers_tree/lc_layertreemodel.h
    librecad/src/ui/dock_widgets/layers_tree/lc_layertreemodel_options.cpp
    librecad/src/ui/dock_widgets/layers_tree/lc_layertreeoptionsdialog.cpp
    librecad/src/ui/dock_widgets/layers_tree/lc_layertreeview.cpp
    librecad/src/ui/dock_widgets/layers_tree/lc_layertreeview.h
    librecad/src/ui/dock_widgets/layers_tree/lc_layertreewidget.cpp
    librecad/src/ui/dock_widgets/layers_tree/lc_layertreewidget.h
    librecad/src/ui/dock_widgets/lc_dockwidget.cpp
    librecad/src/ui/dock_widgets/lc_dockwidget.h
    librecad/src/ui/dock_widgets/lc_graphicviewawarewidget.cpp
    librecad/src/ui/dock_widgets/lc_graphicviewawarewidget.h
    librecad/src/ui/dock_widgets/library_widget/qg_librarywidget.cpp
    librecad/src/ui/dock_widgets/library_widget/qg_librarywidget.h
    librecad/src/ui/dock_widgets/pen_palette/lc_peninforegistry.cpp
    librecad/src/ui/dock_widgets/pen_palette/lc_peninforegistry.h
    librecad/src/ui/dock_widgets/pen_palette/lc_penitem.cpp
    librecad/src/ui/dock_widgets/pen_palette/lc_penitem.h
    librecad/src/ui/dock_widgets/pen_palette/lc_penpalettedata.cpp
    librecad/src/ui/dock_widgets/pen_palette/lc_penpalettedata.h
    librecad/src/ui/dock_widgets/pen_palette/lc_penpalettemodel.cpp
    librecad/src/ui/dock_widgets/pen_palette/lc_penpaletteoptions.cpp
    librecad/src/ui/dock_widgets/pen_palette/lc_penpaletteoptionsdialog.cpp
    librecad/src/ui/dock_widgets/pen_palette/lc_penpalettewidget.cpp
    librecad/src/ui/dock_widgets/pen_palette/lc_penpalettewidget.h
    librecad/src/ui/dock_widgets/pen_wizard/colorcombobox.cpp
    librecad/src/ui/dock_widgets/pen_wizard/colorcombobox.h
    librecad/src/ui/dock_widgets/pen_wizard/colorwizard.cpp
    librecad/src/ui/dock_widgets/pen_wizard/colorwizard.h
    librecad/src/ui/dock_widgets/pen_wizard/lc_penwizard.cpp
    librecad/src/ui/dock_widgets/pen_wizard/lc_penwizard.h
    librecad/src/ui/dock_widgets/ucs_list/lc_dlgucslistoptions.cpp
    librecad/src/ui/dock_widgets/ucs_list/lc_dlgucslistoptions.h
    librecad/src/ui/dock_widgets/ucs_list/lc_dlgucsproperties.cpp
    librecad/src/ui/dock_widgets/ucs_list/lc_dlgucsproperties.h
    librecad/src/ui/dock_widgets/ucs_list/lc_ucslistbutton.cpp
    librecad/src/ui/dock_widgets/ucs_list/lc_ucslistbutton.h
    librecad/src/ui/dock_widgets/ucs_list/lc_ucslistmodel.cpp
    librecad/src/ui/dock_widgets/ucs_list/lc_ucslistmodel.h
    librecad/src/ui/dock_widgets/ucs_list/lc_ucslistoptions.cpp
    librecad/src/ui/dock_widgets/ucs_list/lc_ucslistoptions.h
    librecad/src/ui/dock_widgets/ucs_list/lc_ucslistwidget.cpp
    librecad/src/ui/dock_widgets/ucs_list/lc_ucslistwidget.h
    librecad/src/ui/dock_widgets/views_list/lc_dlgnamedviewslistoptions.cpp
    librecad/src/ui/dock_widgets/views_list/lc_dlgnamedviewslistoptions.h
    librecad/src/ui/dock_widgets/views_list/lc_namedviewsbutton.cpp
    librecad/src/ui/dock_widgets/views_list/lc_namedviewsbutton.h
    librecad/src/ui/dock_widgets/views_list/lc_namedviewslistoptions.cpp
    librecad/src/ui/dock_widgets/views_list/lc_namedviewslistwidget.cpp
    librecad/src/ui/dock_widgets/views_list/lc_namedviewslistwidget.h
    librecad/src/ui/dock_widgets/views_list/lc_namedviewsmodel.cpp
    librecad/src/ui/dock_widgets/views_list/lc_namedviewsmodel.h
    librecad/src/ui/dock_widgets/workspaces/lc_workspacelistbutton.cpp
    librecad/src/ui/dock_widgets/workspaces/lc_workspacelistbutton.h
    librecad/src/ui/lc_actionhandlerfactory.cpp
    librecad/src/ui/lc_actionhandlerfactory.h
    librecad/src/ui/lc_snapmanager.cpp
    librecad/src/ui/lc_snapmanager.h
    librecad/src/ui/lc_uiutils.cpp
    librecad/src/ui/lc_uiutils.h
    librecad/src/ui/main/fontviewer/lc_fontfileviewer.cpp
    librecad/src/ui/main/fontviewer/lc_fontfileviewer.h
    librecad/src/ui/main/init/lc_actionfactory.cpp
    librecad/src/ui/main/init/lc_actionfactory.h
    librecad/src/ui/main/init/lc_applicationwindowinitializer.cpp
    librecad/src/ui/main/init/lc_applicationwindowinitializer.h
    librecad/src/ui/main/init/lc_menufactory.cpp
    librecad/src/ui/main/init/lc_menufactory.h
    librecad/src/ui/main/init/lc_toolbarfactory.cpp
    librecad/src/ui/main/init/lc_toolbarfactory.h
    librecad/src/ui/main/init/lc_widgetfactory.cpp
    librecad/src/ui/main/init/lc_widgetfactory.h
    librecad/src/ui/main/lc_appwindowaware.cpp
    librecad/src/ui/main/lc_appwindowaware.h
    librecad/src/ui/main/lc_defaultactioncontext.cpp
    librecad/src/ui/main/lc_defaultactioncontext.h
    librecad/src/ui/main/lc_mdiapplicationwindow.cpp
    librecad/src/ui/main/lc_mdiapplicationwindow.h
    librecad/src/ui/main/mainwindowx.cpp
    librecad/src/ui/main/mainwindowx.h
    librecad/src/ui/main/persistence/lc_documentsstorage.cpp
    librecad/src/ui/main/persistence/lc_documentsstorage.h
    librecad/src/ui/main/qc_applicationwindow.cpp
    librecad/src/ui/main/qc_applicationwindow.h
    librecad/src/ui/main/qc_mdiwindow.cpp
    librecad/src/ui/main/qc_mdiwindow.h
    librecad/src/ui/main/release_check/lc_releasechecker.cpp
    librecad/src/ui/main/release_check/lc_releasechecker.h
    librecad/src/ui/main/support/lc_appwindowdialogsinvoker.cpp
    librecad/src/ui/main/support/lc_appwindowdialogsinvoker.h
    librecad/src/ui/main/support/lc_customstylehelper.cpp
    librecad/src/ui/main/support/lc_customstylehelper.h
    librecad/src/ui/main/support/lc_gridviewinvoker.cpp
    librecad/src/ui/main/support/lc_gridviewinvoker.h
    librecad/src/ui/main/support/lc_infocursorsettingsmanager.cpp
    librecad/src/ui/main/support/lc_infocursorsettingsmanager.h
    librecad/src/ui/main/support/lc_lastopenfilesopener.cpp
    librecad/src/ui/main/support/lc_lastopenfilesopener.h
    librecad/src/ui/main/support/qg_recentfiles.cpp
    librecad/src/ui/main/support/qg_recentfiles.h
    librecad/src/ui/main/workspaces/lc_workspacesinvoker.cpp
    librecad/src/ui/main/workspaces/lc_workspacesinvoker.h
    librecad/src/ui/main/workspaces/lc_workspacesmanager.cpp
    librecad/src/ui/main/workspaces/lc_workspacesmanager.h
    librecad/src/ui/not_used/LC_DlgParabola.cpp
    librecad/src/ui/qg_actionhandler.cpp
    librecad/src/ui/qg_actionhandler.h
    librecad/src/ui/view/lc_centralwidget.cpp
    librecad/src/ui/view/lc_centralwidget.h
    librecad/src/ui/view/lc_printpreviewview.cpp
    librecad/src/ui/view/lc_printpreviewview.h
    librecad/src/ui/view/qg_graphicview.cpp
    librecad/src/ui/view/qg_graphicview.h
)

set(MUPARSER_SOURCES
    libraries/muparser/include/muParser.h
    libraries/muparser/include/muParserBase.h
    libraries/muparser/include/muParserBytecode.h
    libraries/muparser/include/muParserCallback.h
    libraries/muparser/include/muParserDLL.h
    libraries/muparser/include/muParserDef.h
    libraries/muparser/include/muParserError.h
    libraries/muparser/include/muParserFixes.h
    libraries/muparser/include/muParserInt.h
    libraries/muparser/include/muParserTemplateMagic.h
    libraries/muparser/include/muParserToken.h
    libraries/muparser/include/muParserTokenReader.h
    libraries/muparser/src/muParser.cpp
    libraries/muparser/src/muParserBase.cpp
    libraries/muparser/src/muParserBytecode.cpp
    libraries/muparser/src/muParserCallback.cpp
    libraries/muparser/src/muParserDLL.cpp
    libraries/muparser/src/muParserError.cpp
    libraries/muparser/src/muParserInt.cpp
    libraries/muparser/src/muParserTokenReader.cpp
)

# Static library from shared sources
qt_add_library(librecad_lib STATIC 
	${MUPARSER_SOURCES}
	${SHARED_SOURCES}
)
target_compile_definitions(librecad_lib PRIVATE
    DWGSUPPORT
    MUPARSER_STATIC
    LC_VERSION=2.2.2.5-alpha
    LC_PRERELEASE=true
)
target_include_directories(librecad_lib PRIVATE
    ${SHARED_INCLUDES}
    ${MUPARSER_SOURCES}
)

target_link_libraries(librecad_lib PRIVATE
    Qt6::Core Qt6::Widgets Qt6::Gui Qt6::PrintSupport Qt6::Svg Qt6::Network
    ${Boost_LIBRARIES}
)
set_property(TARGET librecad_lib PROPERTY AUTOUIC_OPTIONS --connections string)

if(WIN32)
    target_compile_definitions(librecad_lib PRIVATE _USE_MATH_DEFINES)
endif()

set(MAIN_SOURCES
    librecad/src/main/main.cpp
    librecad/src/main/console_dxf2pdf/console_dxf2pdf.cpp
    librecad/src/main/console_dxf2pdf/console_dxf2pdf.h
    librecad/src/main/console_dxf2pdf/pdf_print_loop.cpp
    librecad/src/main/console_dxf2pdf/pdf_print_loop.h
    librecad/src/main/console_dxf2png.cpp
    librecad/src/main/console_dxf2png.h
    librecad/src/ui/dialogs/main/qg_dlginitial.cpp
    librecad/src/ui/dialogs/main/qg_dlginitial.h
    ${LIBRECAD_RES}
)

# Main executable
qt_add_executable(librecad
	${MAIN_SOURCES}
)
target_include_directories(librecad PRIVATE
        ${SHARED_INCLUDES}
)

target_link_libraries(librecad PRIVATE
   librecad_lib
   Qt6::Core Qt6::Widgets Qt6::Gui Qt6::PrintSupport Qt6::Svg Qt6::Network
)
install(TARGETS librecad RUNTIME DESTINATION bin)

# Translations
set(TS_DIR librecad/ts)
set(TS_FILES
    librecad/ts/librecad_ar.ts
    librecad/ts/librecad_ca.ts
    librecad/ts/librecad_cs.ts
    librecad/ts/librecad_da.ts
    librecad/ts/librecad_de.ts
    librecad/ts/librecad_el.ts
    librecad/ts/librecad_en_au.ts
    librecad/ts/librecad_en.ts
    librecad/ts/librecad_es_ar.ts
    librecad/ts/librecad_es_bo.ts
    librecad/ts/librecad_es_cl.ts
    librecad/ts/librecad_es_co.ts
    librecad/ts/librecad_es_cr.ts
    librecad/ts/librecad_es_do.ts
    librecad/ts/librecad_es_ec.ts
    librecad/ts/librecad_es_gt.ts
    librecad/ts/librecad_es_hn.ts
    librecad/ts/librecad_es_mx.ts
    librecad/ts/librecad_es_ni.ts
    librecad/ts/librecad_es_pa.ts
    librecad/ts/librecad_es_pe.ts
    librecad/ts/librecad_es_pr.ts
    librecad/ts/librecad_es_py.ts
    librecad/ts/librecad_es_sv.ts
    librecad/ts/librecad_es.ts
    librecad/ts/librecad_es_us.ts
    librecad/ts/librecad_es_uy.ts
    librecad/ts/librecad_es_ve.ts
    librecad/ts/librecad_et.ts
    librecad/ts/librecad_eu.ts
    librecad/ts/librecad_fi.ts
    librecad/ts/librecad_fr.ts
    librecad/ts/librecad_gl.ts
    librecad/ts/librecad_he.ts
    librecad/ts/librecad_hi.ts
    librecad/ts/librecad_hu.ts
    librecad/ts/librecad_id_ID.ts
    librecad/ts/librecad_it.ts
    librecad/ts/librecad_ja.ts
    librecad/ts/librecad_ka.ts
    librecad/ts/librecad_ko.ts
    librecad/ts/librecad_lv.ts
    librecad/ts/librecad_mk.ts
    librecad/ts/librecad_nl.ts
    librecad/ts/librecad_no.ts
    librecad/ts/librecad_pa.ts
    librecad/ts/librecad_pl.ts
    librecad/ts/librecad_pt_br.ts
    librecad/ts/librecad_pt_pt.ts
    librecad/ts/librecad_ro_ro.ts
    librecad/ts/librecad_ru.ts
    librecad/ts/librecad_sk.ts
    librecad/ts/librecad_sl.ts
    librecad/ts/librecad_sq_al.ts
    librecad/ts/librecad_sr.ts
    librecad/ts/librecad_sv.ts
    librecad/ts/librecad_ta.ts
    librecad/ts/librecad_th.ts
    librecad/ts/librecad_tr.ts
    librecad/ts/librecad_uk.ts
    librecad/ts/librecad_zh_cn.ts
    librecad/ts/librecad_zh_tw.ts
)
qt_add_translations(librecad TS_FILE_DIR ${TS_DIR} TS_FILES ${TS_FILES})

# Optional ttf2lff
if(FREETYPE_FOUND AND NOT WIN32)
    add_executable(ttf2lff
        tools/ttf2lff/main.cpp)
    target_link_libraries(ttf2lff PRIVATE ${FREETYPE_LIBRARIES})
    target_include_directories(ttf2lff PRIVATE
        ${FREETYPE_INCLUDE_DIRS}
        ${SHARED_INCLUDES}
    )
endif()

add_subdirectory(libraries/lciconengine)
add_subdirectory(plugins)

option(BUILD_TESTS "Build unit tests for LibreCAD" OFF)

if(BUILD_TESTS)
    # Add Catch2 as a subdirectory (assumes Catch2 is in externals/Catch2)
    add_subdirectory(externals/Catch2)

    # Define test executable
    qt_add_executable(librecad_tests
	# this is needed to allow testing methods used by main()
	# main() is excluded when BUILD_TEST=ON
	${MAIN_SOURCES}
        ${LIBRECAD_RES}
	### The actual tests
        librecad/src/lib/engine/document/entities/tests/lc_splinehelper_tests.cpp
        librecad/src/lib/engine/document/entities/tests/rs_ellipse_tests.cpp
        librecad/src/lib/engine/document/entities/tests/rs_spline_tests.cpp
        librecad/src/lib/math/tests/rs_math_tests.cpp
    )

    # Include directories for rs_math.h and other dependencies
    target_include_directories(librecad_tests PRIVATE
        ${SHARED_INCLUDES}
    )

    # Link Catch2 and other required libraries (e.g., Boost, Qt)
    target_link_libraries(librecad_tests PRIVATE
        librecad_lib
        Catch2::Catch2WithMain
        ${Boost_LIBRARIES}
        Qt6::Core
        Qt6::Gui
        Qt6::Network
        Qt6::PrintSupport
        Qt6::Svg
        Qt6::Widgets
    )

    # Enable C++17 for the test target (matching LibreCAD's standard)
    target_compile_features(librecad_tests PRIVATE cxx_std_17)
    # compiling time defines
    target_compile_definitions(librecad_tests PRIVATE BUILD_TESTS=1)
endif()
